Java爬蟲技術之再戰江湖

隨著大數據技術興起,互聯網江湖再現波瀾。數據採集這門一本萬利的生意,一直被python這個門派所獨攬,獨步天下,無人能敵。但是,Java的爬蟲技術仍是不可小覷。接下來,小猿就帶大家一起來看看關於Java爬蟲的入門知識。


Java爬蟲技術之再戰江湖


1

入門秘籍之Http協議和robots協議

《HTTP協議》,HyperText Transfer Protocol也就是超文本傳輸協議。是因特網上應用最為廣泛的一種網絡傳輸協議,所有的WWW文件都必須遵守這個標準。HTTP是一個基於TCP/IP通信協議來傳遞數據(HTML文件, 圖片文件, 查詢結果等)。

Http協議的工作原理:HTTP協議工作於客戶端-服務端架構上,瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB服務器發送所有請求,服務器端接到請求之後把相應的資源信息響應給客戶端,從而完成一個請求響應的過程。

如圖所示:


Java爬蟲技術之再戰江湖


Http協議有以下特點:

1.HTTP是無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。

2.HTTP是媒體獨立的:這意味著,只要客戶端和服務器知道如何處理的數據內容,任何類型的數據都可以通過HTTP發送。客戶端以及服務器指定使用適合的MIME-type內容類型。

3.HTTP是無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。

2

數據消息格式

客戶端發送一個HTTP請求到服務器的請求消息包括以下格式:

請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成。

如圖所示:


Java爬蟲技術之再戰江湖


請求行以一個請求符號開頭,以空格分開,後面跟著請求的URI和協議的版本,格式如下:

Method Request-URI HTTP-Version CRLF

實例:GET /login.jsp HTTP/1.1

其中GET是本次請求所採用的請求方法,HTTP請求方法有七種:


Java爬蟲技術之再戰江湖


請求頭部信息:

請求頭部由key/value鍵值對組成,每行一對。請求頭部通知服務器有關於客戶端請求的信息,典型的請求頭有:

Accept: text/html,image/*

Accept-Charset: UTF-8

Accept-Encoding: gzip,compress

Accept-Language: en-us,zh-cn

Host: www.zhidisoft.com:80

If-Modified-Since: Tue, 11 Jul 2017 18:23:51 GMT

Referer: http://www.zhidisoft.com/index.jsp

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

Connection: close/Keep-Alive

Date: Tue, 11 Jul 2017 18:23:51 GMT

3

HTTP響應(response)

服務器端對一個HTTP請求處理完畢之後,服務器會返回給客戶端一些信息,這就是HTTP響應。一個HTTP響應代表服務器向客戶端回送的數據,它也包括三個部分:一個狀態行、若干消息頭、以及實體內容 。其中的一些消息頭和實體內容都是可選的,消息頭和實體內容間要用空行隔開:


Java爬蟲技術之再戰江湖


HTTP狀態行格式如下:

HTTP-Version Status-Code Reason-Phrase CRLF

HTTP-Versio:表示服務器HTTP協議的版本

Status-Code:表示服務器發回的響應狀態代碼

Reason-Phrase:表示狀態代碼的文本描述

狀態碼用於表示服務器對請求的處理結果。

響應狀態碼分為5類,如下所示:


Java爬蟲技術之再戰江湖


消息報頭:

與請求報頭類似,不同在於請求報頭附帶的是關於請求的相關信息,而消息報頭則附帶的是服務端應答的相關信息。

常見的響應頭:

Content-Encoding: gzip

Content-Type: text/html; charset=UTF-8

Last-Modified: Tue, 11 Jul 2017 18:23:51 GMT

Expires: -1

Cache-Control: no-cache

Pragma: no-cache

Connection: close/Keep-Alive

Date: Tue, 11 Jul 2017 18:23:51 GMT

4

Robots協議

《robots協議》,Robots協議全稱是“網絡爬蟲排除標準”(Robots Exclusion Protocol),網站通過Robots協議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取,也稱為爬蟲協議、機器人協議等。Robots協議可以屏蔽一些網站中比較大的文件,如:圖片,音樂,視頻等,節省服務器帶寬;可以屏蔽站點的一些死鏈接。方便搜索引擎抓取網站內容;設置網站地圖連接,方便引導蜘蛛爬取頁面。


Java爬蟲技術之再戰江湖


Robots協議的語法格式:

Disallow: /表示禁止訪問,Allow: /表示允許訪問。

在寫robots.txt時需特別注意的是,/前面有一個英文狀態下的空格(必須是英文狀態下的空格)。

禁止搜索引擎訪問網站中的某幾個文件夾,以a、b、c為例,寫法分別如下:

Disallow: /a/

Disallow: /b/

Disallow: /c/

禁止搜索引擎訪問文件夾中的某一類文件,以a文件夾中的js文件為例,寫法如下:

Disallow: /a/*.js

只允許某個搜索引擎訪問,以Baiduspider為例,寫法如下:

User-agent: Baiduspider

Disallow:

禁止訪問網站中的動態頁面

User-agent: *

Disallow: /*?*

只允許搜索引擎訪問某類文件,以htm為例,寫法如下:

User-agent: *

Allow: .htm$

Disallow: /

禁止某個搜索引擎抓取網站上的所有圖片,以Baiduspider為例,寫法如下:

User-agent: Baiduspider

Disallow: .jpg$

Disallow: .jpeg$

Disallow: .gif$

Disallow: .png$

Disallow: .bmp$

robots.txt文件存放在網站根目錄下,並且文件名所有字母都必須小寫。

Java爬蟲技術之再戰江湖


分享到:


相關文章: