訂閱
糾錯
加入自媒體

深挖網(wǎng)絡(luò)爬蟲技術(shù)及Crawl4J應(yīng)用

什么是網(wǎng)絡(luò)爬蟲

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

——來源:百度百科

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

網(wǎng)絡(luò)爬蟲的工作原理

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

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

解析器:解析器是負責網(wǎng)絡(luò)爬蟲的主要部分,其負責的工作主要有:下載網(wǎng)頁的內(nèi)容,對網(wǎng)頁的文本進行處理,如過濾功能,抽取特殊HTML標簽的功能,分析數(shù)據(jù)功能。

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

網(wǎng)絡(luò)爬蟲的流程

圖1:網(wǎng)絡(luò)爬蟲的流程

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

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

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

4. 保存數(shù)據(jù):將解析加工后的數(shù)據(jù)進行保存處理?梢员4鏋槲谋,至數(shù)據(jù)庫,或保存特定格式的文件(圖片視頻等)。

網(wǎng)絡(luò)爬蟲技術(shù)Crawl4J應(yīng)用

1. 技術(shù)介紹

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

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

因此在項目中我們可以通過網(wǎng)絡(luò)爬蟲Crawl4J技術(shù)進行爬取網(wǎng)頁內(nèi)容,然后通過Jsoup技術(shù)對響應(yīng)結(jié)果進行解析,并提取滿足條件的內(nèi)容。

2. 項目示例

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

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

Maven依賴Jar包:

<dependency>

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

<artifactId>crawler4j</artifactId>

<version>4.3</version>

</dependency>

控制器:

1  2  下一頁>  
聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

人工智能 獵頭職位 更多
掃碼關(guān)注公眾號
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯
x
*文字標題:
*糾錯內(nèi)容:
聯(lián)系郵箱:
*驗 證 碼:

粵公網(wǎng)安備 44030502002758號