1. 程式人生 > 其它 >6.25Java網路程式設計之網路爬蟲原理

6.25Java網路程式設計之網路爬蟲原理

6.25Java網路程式設計之網路爬蟲原理

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()