王爽
摘 要:隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,搜索平臺和搜索引擎在許多領(lǐng)域得到廣泛使用,它被視為一種工具,人們可以在網(wǎng)上找到他們需要的信息,但是隨著技術(shù)的發(fā)展,人們發(fā)現(xiàn)現(xiàn)在的搜索引擎并不能夠滿足自己的特定需求,大眾的搜索引擎也很難實現(xiàn)一個域范圍內(nèi)全面快速的搜索,為了向用戶提供有效可用的信息,我們通過爬蟲技術(shù),只對特定網(wǎng)站的內(nèi)容進行爬取,從而避免垃圾網(wǎng)站信息和廣告的推送。本論文設(shè)計和實現(xiàn)分布式的爬蟲系統(tǒng),采用了Scrapy架構(gòu),并通過Redis作為URL緩存隊列進行分布式擴展,使爬蟲的效率大大的提升,對Redis進行高可用配置,提升系統(tǒng)高可用性,并能夠完成增量爬取,系統(tǒng)共分為調(diào)度器模塊、URL爬取模塊、流水線模塊、監(jiān)控模塊等幾個主要模塊的內(nèi)容。
關(guān)鍵詞:Scrapy框架;分布式;爬蟲系統(tǒng);Redis
1 研究意義背景及內(nèi)容介紹
1.1 研究背景
隨著信息科技的進步和互聯(lián)網(wǎng)的日益普及,人類正在進行信息史上最巨大的一項工程,即將現(xiàn)實世界現(xiàn)有的信息,諸如報紙、期刊、書籍、專利文獻等,都放到網(wǎng)絡(luò)上去,同時也不停地在網(wǎng)絡(luò)上生產(chǎn)出數(shù)不勝數(shù)的新信息。整個網(wǎng)絡(luò)正在堆積成一個前所未有的超級大型數(shù)據(jù)庫。在近幾年里,WWW更是得到了長足的發(fā)展。隨著Internet的快速發(fā)展,Web上的網(wǎng)頁數(shù)據(jù)量正在呈指數(shù)增長,據(jù)有關(guān)機構(gòu)估計每18個月網(wǎng)絡(luò)上的信息量就會翻倍,網(wǎng)頁的更新速度甚至更快,有人估計每6個月網(wǎng)頁數(shù)量就會翻倍。如何能夠更大限度的找到滿足用戶需求的網(wǎng)頁信息呢?我想我們可以通過個性化的方式來為用戶量身打造屬于其自身的搜索服務(wù),即我們可以通過爬蟲技術(shù)來對特定網(wǎng)頁內(nèi)容進行信息的爬取,針對不同需求的用戶,進行不同網(wǎng)站內(nèi)容的爬取來為用戶進行推送。
1.2 爬蟲介紹
爬蟲是搜索引擎中不可缺少的一部分,它通過一定的規(guī)則,實現(xiàn)對網(wǎng)頁信息的爬取,爬蟲將互聯(lián)網(wǎng)中的數(shù)據(jù)爬取到本地,能夠讓搜索引擎對本地數(shù)據(jù)進行檢索,爬蟲可以分為通用爬蟲、聚焦爬蟲以及增量式爬蟲。實際的網(wǎng)絡(luò)爬蟲系統(tǒng)通常是幾種爬蟲技術(shù)相結(jié)合實現(xiàn)的。
1.3 傳統(tǒng)搜索引擎和垂直搜索引擎對比
鑒于現(xiàn)在網(wǎng)絡(luò)信息資源的海量規(guī)模,網(wǎng)絡(luò)資源采用自動獲取的方式,并且隨著Web技術(shù)的發(fā)展,我們越來越多的使用搜索引擎來幫助我們解決問題,查詢資料,尋找解決方法,現(xiàn)在搜索引擎已經(jīng)成為了我們生活中必不可少的一部分,根據(jù)數(shù)據(jù)的搜索范圍,我們將搜索引擎分為兩類:傳統(tǒng)搜索引擎和垂直搜索引擎。傳統(tǒng)的搜索引擎,它的資源覆蓋面非常的廣,當我們在檢索欄輸入關(guān)鍵字時,它對互聯(lián)網(wǎng)上的所有信息進行檢索,得到任何主題,任何類型的資源,其中也存在許多無關(guān)資源以及無法打開的鏈接。由于傳統(tǒng)的搜索引擎存在死鏈太多,數(shù)據(jù)的相關(guān)度較低等缺點,人們提出了垂直搜索引擎,垂直搜索引擎也被稱為專業(yè)或者專用搜索引擎,就是為查詢某一學科或領(lǐng)域而提出的一種的搜索工具,我們采用這種垂直搜索的思想,針對特定網(wǎng)站即達到只針對某一領(lǐng)域搜索的目標。傳統(tǒng)搜索引擎和垂直搜索引擎對比傳統(tǒng)搜索引擎和垂直搜索引擎對比傳統(tǒng)搜索引擎和垂直搜索引擎對比雙擊上一行的“1”“2”試試,J(本行不會被打印,請自行刪除)。
1.4 個性化推送系統(tǒng)結(jié)合爬蟲技術(shù)的意義
隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,搜索平臺和搜素引擎在許多領(lǐng)域得到廣泛使用,它被視為一種工具,人們可以在網(wǎng)上找到他們需要的信息,但是隨著技術(shù)的發(fā)展,人們發(fā)現(xiàn)現(xiàn)在的搜索引擎并不能夠滿足自己的特定需求,大眾的搜索引擎也很難實現(xiàn)一個域范圍內(nèi)全面快速的搜索,且現(xiàn)在越來越多的數(shù)據(jù)信息參差不齊,搜索推送的內(nèi)容中含有許多垃圾網(wǎng)站的內(nèi)容以及廣告等,為了向用戶提供有效可用的信息,我們通過爬蟲技術(shù)以及垂直搜索技術(shù),只對特定網(wǎng)站的內(nèi)容進行爬取,從而過濾不需要的網(wǎng)站內(nèi)容和廣告,大大減少了人們獲得所需數(shù)據(jù)的時間,并且數(shù)據(jù)的可用性也大大增強,“基于Scrapy的個性化推送系統(tǒng)”可以很好地滿足人們對特定領(lǐng)域、特定網(wǎng)站信息的需求;且基于用戶個性化的爬行器是一種輕量級的采集系統(tǒng),它的目標就是通過用戶興趣制導或與用戶交互等手段來采集信息,給用戶提供個性化服務(wù)。
2 爬蟲系統(tǒng)設(shè)計概要
2.1 系統(tǒng)總體功能結(jié)構(gòu)
根據(jù)我們對基于Scrapy的個性化推送系統(tǒng)的分析,我們可以將整個系統(tǒng)分為四個功能模塊,分別是調(diào)度器模塊,URL爬取模塊,流水線模塊和監(jiān)控模塊。系統(tǒng)的功能模塊說明圖如圖1所示。其中,調(diào)度模器塊分為URL去重,URL調(diào)度兩個子模塊分別完成URL的去重和調(diào)度工作;URL爬取模塊分為頁面下載,頁面內(nèi)容解析兩個子模塊完成所分配URL對應(yīng)頁面下載和內(nèi)容的解析;水線模塊分為詳細信息流水線模塊實現(xiàn)提取內(nèi)容整理和把提取內(nèi)容存儲到數(shù)據(jù)庫中,監(jiān)控模塊分為爬蟲監(jiān)控子模塊以及設(shè)備監(jiān)控子模塊來完成對本系統(tǒng)的監(jiān)控。
2.2 系統(tǒng)技術(shù)實現(xiàn)框架
系統(tǒng)的主要任務(wù)是爬取特定網(wǎng)站中的網(wǎng)頁,包括網(wǎng)頁中的標題、內(nèi)容以及發(fā)表時間等等,并將有效數(shù)據(jù)存儲下來主節(jié)點維護一個待爬取的URL隊列。當爬蟲從節(jié)點空閑時,會向主節(jié)點發(fā)出請求以獲取爬取任務(wù),主節(jié)點則依據(jù)某種優(yōu)先級策略,從待爬取URL隊列中提取一個任務(wù),將其交由爬蟲從節(jié)點負責爬取。爬蟲從節(jié)點完成爬取任務(wù)后,可能會提取到新的爬取請求,此時也需要將其轉(zhuǎn)交給主節(jié)點,再由主節(jié)點將其放入待爬取的URL隊列。如此循環(huán),主節(jié)點作為其他爬蟲從節(jié)點之間相互通信的媒介,同時也其起到了負載均衡的作用,避免有的爬蟲從節(jié)點處于空閑狀態(tài),而有的爬蟲從節(jié)點處于異常繁忙狀態(tài)。本系統(tǒng)采用主從式架構(gòu)。采用Redis作為Master,每個爬蟲會和Redisserver和SQLserver進行連接,架構(gòu)圖如圖2所示。
參考文獻:
[1] 郭一峰.分布式在線圖書爬蟲系統(tǒng)的設(shè)計與實現(xiàn)[D].北京交通大學,2016.
[2] 習楊定中,趙剛,王泰.網(wǎng)絡(luò)爬蟲在Web信息搜索與數(shù)據(jù)挖掘中應(yīng)用[J].計算機工程與設(shè)計,2009(24):5658~5662.
[3] 劉瑋瑋.搜索引擎中主題爬蟲的研究與實現(xiàn)[D].南京理工大學,2006.
[4] 劉漢興,劉財興.主題爬蟲的搜索策略研究[J].計算機工程與設(shè)計,2008(12):3160~3162.
[5] 夏亮.主題搜索引擎網(wǎng)絡(luò)爬蟲搜索策略的研究與實現(xiàn)[D].北京化工大學,2010.