6.25Java網路程式設計之網路爬蟲原理
阿新 • • 發佈:2021-06-26
Web Spider
虛擬化、形象化的概念,從網路上查詢資料、獲取資料、下載資料、分析資料。對資料進行抽取、清洗、篩選等操作。
這裡面的核心是有價值的資料、有價值的資源。
seo
搜尋引擎優化,便於獲得搜尋引擎公司的排名
sem
再搜尋引擎公司商付費要排名
爬蟲的基本步驟
-
拿到URL
-
下載資源
-
分析資源--->正則表示式(快速地把有規律地數字拿出來)
-
資料抽取、清洗(stockstr)
-
資料儲存
(使用到URL類當中的openstream方法--->從網路上拿資料下來本身就是一個IO流的過程。只不過開啟的是網路流)
瀏覽器和伺服器是分開的,他們之間建立連線通過請求響應的模式。
例項demo
package netstudy;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* 網路爬蟲的原理 + 模擬瀏覽器爬取資料
*
* @since JDK 1.8
* @date 2021/6/25
* @author Lucifer
*/
public class SpiderTestNo1 {
public static void main(String[] args) throws IOException {
/*獲取URL*/
// URL url = new URL("https://www.jd.com");
/*模擬瀏覽器爬取資料*/
URL url = new URL("https://www.dianping.com");
/*下載資源*/
HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
httpURLConnection.setRequestMethod("GET");
httpURLConnection.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36");
/*
這個方法是一個key和value
*/
// InputStream is = url.openStream();
/*
獲取到的內容:
1、html
2、css:層疊樣式表
3、javascript:動態語言,邊解釋變執行--->變數的儲存區域會變化
(Java的反射具備動態特性)
*/
/*處理資料*/
//使用字元流處理資料
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream(), "UTF-8"));
/*輸出資料*/
String msg = null;
while (null!=(msg=bufferedReader.readLine())){
System.out.println(msg);
}
}
}
API
方法 | 功能 |
---|---|
InetAddress(識別IP) | 封裝計算機的IP和DNS(沒有埠資訊)。常用方法:getLocalHost()、getByName()、getAllByname()、getAddress()、getHostName() |
InetSocketAddress(區分軟體) | 包含IP和埠資訊,常用於Socket通訊。實現IP套接字地址(IP地址+埠號),不依賴任何協議。常用方法:getHostName()、getAddress() |
URL(確認訪問資源) | 統一資源定位符,指向網際網路資源的指標。資源可以是簡單的檔案或目錄,也可以是複雜的物件引用。常用方法:getDefaultPort()、getFile()、getHost()、getPath()、getPort()、getProtocol()、getQuery()、getRef() |