深挖網絡爬蟲技術及Crawl4J應用

什么是網絡爬蟲

網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,在FOAF社區(qū)中間,更經常的稱為網頁追逐者),是一種按照一定的規(guī)則,自動地抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。

——來源:百度百科

網絡爬蟲是通過網頁的鏈接地址來尋找網頁,它通過特定的搜索算法來確定路線,通常從網站的某一個頁面開始,讀取網頁的內容,找到在網頁中的其它鏈接地址,然后通過這些鏈接地址尋找下一個網頁,根據深度優(yōu)先算法或者廣度優(yōu)先算法一直循環(huán)下去,直到把這個網站滿足條件的所有網頁都抓取完為止。

網絡爬蟲的工作原理

在網絡爬蟲的系統(tǒng)框架中,主過程由控制器,解析器,資源庫三部分組成。控制器的主要工作是負責給多線程中的各個爬蟲線程分配工作任務。解析器的主要工作是下載網頁,進行頁面的處理,主要是將一些JS腳本標簽、CSS代碼內容、空格字符、HTML標簽等內容處理掉,爬蟲的基本工作是由解析器完成。資源庫是用來存放下載到的網頁資源,一般都采用大型的數據庫存儲,如Oracle數據庫,并對其建立索引。

控制器:控制器是網絡爬蟲的中央控制器,它主要是負責根據系統(tǒng)傳過來的URL鏈接,從線程池中分配一個線程,然后啟動該線程調用爬蟲爬取網頁的過程。

解析器:解析器是負責網絡爬蟲的主要部分,其負責的工作主要有:下載網頁的內容,對網頁的文本進行處理,如過濾功能,抽取特殊HTML標簽的功能,分析數據功能。

資源庫:主要是用來存儲網頁中下載下來的數據記錄的容器,并提供生成索引的目標源。

網絡爬蟲的流程

圖1:網絡爬蟲的流程

1. 發(fā)起請求:向目標URL站點發(fā)起HTTP請求報文(請求頭,請求體等),等待服務器響應。請求可根據需要來設定是否需要包含額外的請求頭或者請求體內容。

2. 獲取響應內容:如果服務器能正常響應,此時會得到一個Response,Response的內容即是所要獲取的頁面內容,類型可能有HTML,Json字符串,二進制數據(如圖片視頻)等類型。

3. 解析內容:解析得到的請求響應內容,然后對數據進行進一步加工處理。對請求響應內容如是HTML,可以用正則表達式、網頁解析庫進行解析;如是Json,可以直接轉為Json對象解析等;如是URL且滿足條件則繼續(xù)發(fā)起新的HTTP請求。

4. 保存數據:將解析加工后的數據進行保存處理。可以保存為文本,至數據庫,或保存特定格式的文件(圖片視頻等)。

網絡爬蟲技術Crawl4J應用

1. 技術介紹

Crawl4J:是一個輕量級且支持多線程網絡爬蟲技術,開發(fā)者可以調用相應的接口和設定響應的參數配置在短時間內創(chuàng)建一個網絡爬蟲應用。

Jsoup:jsoup 是一款HTML解析器,可直接解析某個URL地址、HTML文本內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似于JavaScript的操作方法來取出和操作數據。適用于單網頁數據抓取或靜態(tài)HTML內容解析。

因此在項目中我們可以通過網絡爬蟲Crawl4J技術進行爬取網頁內容,然后通過Jsoup技術對響應結果進行解析,并提取滿足條件的內容。

2. 項目示例

接下來我們以抓取CSDN博客首頁被推薦文章的為例子,定向采集每篇博客的標題,時間,閱讀量。

具體實現(xiàn)步驟如下:

Maven依賴Jar包:

<dependency>

<groupId>edu.uci.ics</groupId>

<artifactId>crawler4j</artifactId>

<version>4.3</version>

</dependency>

控制器:

12下一頁>

(免責聲明:本網站內容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網站出現(xiàn)的信息,均僅供參考。本網站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。
任何單位或個人認為本網站中的網頁或鏈接內容可能涉嫌侵犯其知識產權或存在不實內容時,應及時向本網站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網站在收到上述法律文件后,將會依法盡快聯(lián)系相關文章源頭核實,溝通刪除相關內容或斷開相關鏈接。 )

贊助商
2019-03-15
深挖網絡爬蟲技術及Crawl4J應用
什么是網絡爬蟲網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,在FOAF社區(qū)中間,更經常的稱為網頁追逐者),是一種按照一定的規(guī)則,自動地抓取萬維網信息的程序或者腳本。

長按掃碼 閱讀全文