本發(fā)明專利技術(shù)公開了一種基于scrapy爬蟲框架的數(shù)據(jù)采集系統(tǒng)及方法,包括:爬蟲隊列模塊和爬蟲執(zhí)行模塊;爬蟲隊列模塊包括爬蟲種子隊列、爬蟲種子處理單元和爬蟲任務(wù)隊列;爬蟲種子隊列用于存儲爬蟲任務(wù);爬蟲種子處理單元用于對爬蟲種子隊列中的爬蟲任務(wù)進行去重篩選處理,并將去重篩選后的爬蟲任務(wù)存儲入爬蟲任務(wù)隊列;爬蟲執(zhí)行模塊包括網(wǎng)頁下載單元和URL挖掘單元;網(wǎng)頁下載單元用于從爬蟲任務(wù)隊列中讀取當(dāng)前需要執(zhí)行的爬蟲任務(wù),基于讀取到的爬蟲任務(wù)下載網(wǎng)頁;URL挖掘單元用于在下載到的網(wǎng)頁中提取到新的URL鏈接作為新的爬蟲任務(wù)存入爬蟲種子隊列;實現(xiàn)對特定領(lǐng)域網(wǎng)站域名的深度挖掘,提升了系統(tǒng)的爬取廣度。
Data acquisition system and method based on the framework of crawler
【技術(shù)實現(xiàn)步驟摘要】
基于scrapy爬蟲框架的數(shù)據(jù)采集系統(tǒng)及方法
本專利技術(shù)屬于數(shù)據(jù)采集
,具體地說,是涉及一種基于scrapy爬蟲框架的數(shù)據(jù)采集系統(tǒng)及方法。
技術(shù)介紹
信息網(wǎng)絡(luò)技術(shù)的快速發(fā)展,帶來了網(wǎng)絡(luò)信息量的指數(shù)性增長。在網(wǎng)絡(luò)信息資源充足的條件下,為了快速、針對性獲取相關(guān)網(wǎng)絡(luò)信息,促使了搜索引擎的誕生。搜索引擎,是指運用特定的計算機程序按照一定的策略自動從因特網(wǎng)上搜集信息,對信息進行組織和處理以后,提供給用戶檢索服務(wù)。搜索引擎從因特網(wǎng)上搜集信息的過程,依賴于網(wǎng)絡(luò)蜘蛛對相關(guān)網(wǎng)站信息的爬取。網(wǎng)絡(luò)蜘蛛是一種自動瀏覽網(wǎng)絡(luò),分析網(wǎng)頁內(nèi)容的程序,是搜索引擎的重要組成部分。Scrapy是目前最主流的爬蟲框架,它是基于twisted(用Python實現(xiàn)的基于事件驅(qū)動的網(wǎng)絡(luò)引擎框架)異步網(wǎng)絡(luò)庫實現(xiàn)的,在爬取速度上相對其他爬蟲是高效的,且具有可定制性。由于網(wǎng)絡(luò)爬蟲對I/O的要求較高,Scrapy將待爬取的URLs直接存儲在內(nèi)存中而非硬盤中,這樣一來,在爬取網(wǎng)頁過程中,當(dāng)爬取的網(wǎng)頁數(shù)量達到數(shù)萬時,需要存儲的URLs數(shù)量可能會超過百萬甚至千萬,再加上Python(一種解釋型、面向?qū)ο蟆討B(tài)數(shù)據(jù)類型的高級程序設(shè)計語言)本身是腳本語言,其對象占用內(nèi)存往往比C/C++等編譯型語言要大得多,而且Python垃圾收集器的釋放內(nèi)存算法并不會在對象不再被引用時立即釋放內(nèi)存。因此,很可能會導(dǎo)致單機內(nèi)存枯竭,造成爬取速度變慢。
技術(shù)實現(xiàn)思路
本專利技術(shù)的目的在于提供一種基于scrapy爬蟲框架的數(shù)據(jù)采集系統(tǒng)及方法,克服現(xiàn)有爬蟲框架數(shù)據(jù)采集方式的不足,提升了爬取效率、爬取穩(wěn)定性和爬取廣度。本專利技術(shù)采用以下技術(shù)方案予以實現(xiàn):提出一種基于scrapy爬蟲框架的數(shù)據(jù)采集系統(tǒng),包括:爬蟲隊列模塊,包括爬蟲種子隊列、爬蟲種子處理單元和爬蟲任務(wù)隊列;所述爬蟲種子隊列,用于存儲爬蟲任務(wù);所述爬蟲種子處理單元,用于對爬蟲種子隊列中的爬蟲任務(wù)進行去重篩選處理,并將去重篩選后的爬蟲任務(wù)存儲入爬蟲任務(wù)隊列;爬蟲執(zhí)行模塊,包括網(wǎng)頁下載單元和URL挖掘單元;所述網(wǎng)頁下載單元,用于從爬蟲任務(wù)隊列中讀取當(dāng)前需要執(zhí)行的爬蟲任務(wù),基于讀取到的爬蟲任務(wù)下載網(wǎng)頁;所述URL挖掘單元,用于在下載到的網(wǎng)頁中提取到新的URL鏈接作為新的爬蟲任務(wù)存入所述爬蟲種子隊列。進一步的,所述系統(tǒng)還包括:任務(wù)調(diào)度模塊,包括爬蟲進程隊列和進程管理器;其中,所述進程管理器,用于根據(jù)控制信息和爬蟲任務(wù)隊列信息創(chuàng)建爬蟲進程,將創(chuàng)建的爬蟲進程加入所述爬蟲進程隊列并進行管理,以及控制所述網(wǎng)頁下載單元下載網(wǎng)頁;所述爬蟲進程隊列,用于存儲當(dāng)前正在執(zhí)行、暫時掛起和已經(jīng)結(jié)束的爬蟲進程。進一步的,所述系統(tǒng)還包括:Kafka消息庫,用于存儲所述爬蟲種子隊列。進一步的,所述系統(tǒng)還包括:Redis數(shù)據(jù)庫,用于存儲所述爬蟲任務(wù)隊列。進一步的,所述系統(tǒng)還包括:MongoDB數(shù)據(jù)庫,用于存儲所述網(wǎng)頁下載單元下載的網(wǎng)頁內(nèi)容。進一步的,所述爬蟲種子處理單元包括:去重插件,用于將所述URL挖掘單元得到的新的爬蟲種子與所述爬蟲任務(wù)隊列中的爬蟲隊列進行判重處理,得到未被爬取過的爬蟲種子;篩選插件,用于根據(jù)篩選標準對爬蟲種子進行匹配篩選。進一步的,所述網(wǎng)頁下載單元還用于:重寫scrapy的下載組件,實現(xiàn)通過代理vpn下載網(wǎng)頁;所述URL挖掘單元,還用于重寫scrapy的spider組件,實現(xiàn)提取網(wǎng)站網(wǎng)頁的網(wǎng)址鏈接;將提取到的網(wǎng)址鏈接存入所述爬蟲種子隊列。進一步的,所述系統(tǒng)還包括:爬蟲管理器,基于HTTP并使用TwistedApplication框架實現(xiàn),部署在所述爬蟲隊列模塊、所述爬蟲執(zhí)行模塊和所述任務(wù)調(diào)度模塊,使得所述爬蟲隊列模塊、所述爬蟲執(zhí)行模塊和所述任務(wù)調(diào)度模塊之間通過調(diào)用Twisted框架內(nèi)部的TimerService接口通信。提出一種基于scrapy爬蟲框架的數(shù)據(jù)采集方法,包括:步驟1)讀取爬蟲種子隊列中的爬蟲任務(wù);步驟2)將爬蟲種子隊列中的爬蟲任務(wù)進行去重篩選,并將去重篩選后的爬蟲任務(wù)存儲入爬蟲任務(wù)隊列;步驟3)從爬蟲任務(wù)隊列中讀取當(dāng)前需要執(zhí)行的爬蟲任務(wù),基于爬蟲任務(wù)下載網(wǎng)頁;步驟4)從下載得到的網(wǎng)頁中提取到新的URL連接作為新的爬蟲任務(wù)存入所述爬蟲種子隊列;步驟5)重復(fù)步驟1)至步驟4),直到所述爬蟲種子隊列和所述爬蟲任務(wù)隊列為空。進一步的,在步驟1)之前,所述方法還包括:將所需爬取的網(wǎng)站域名、可能存在所需爬取網(wǎng)址URL的網(wǎng)站域名存入所述爬蟲種子隊列中。與現(xiàn)有技術(shù)相比,本專利技術(shù)的優(yōu)點和積極效果是:本專利技術(shù)提出的基于scrapy爬蟲框架的數(shù)據(jù)采集系統(tǒng)及方法中,爬蟲執(zhí)行模塊在下載的網(wǎng)頁中提取新的URL鏈接作為新的爬蟲任務(wù)存入創(chuàng)建的爬蟲種子隊列中,對爬蟲種子隊列中的爬蟲任務(wù)進行去重篩選后存入爬蟲任務(wù)隊列,爬蟲執(zhí)行模塊再從爬蟲任務(wù)隊列中讀取爬蟲任務(wù),繼續(xù)進行下載、去重和篩選,如此重復(fù)直至爬蟲蟲子隊列和爬蟲任務(wù)隊列為空,實現(xiàn)對特定領(lǐng)域網(wǎng)站域名的深度挖掘,達到大量獲取、下載以及存儲相關(guān)網(wǎng)頁內(nèi)容的目的,適用于規(guī)模大、相關(guān)度高的網(wǎng)頁內(nèi)容資源挖掘任務(wù),提升了系統(tǒng)的爬取廣度;同時,對爬蟲種子隊列中的爬蟲任務(wù)進行去重和篩選,降低了處理操作的復(fù)雜度和所需時間,提升了系統(tǒng)的爬取效率。進一步的,本系統(tǒng)將爬蟲種子隊列存儲于kafka消息庫,由于kafka具有可持久性,當(dāng)中心節(jié)點宕機的情況下,也不會丟失帶爬取的任務(wù),保證了系統(tǒng)的可靠性,提升了系統(tǒng)的爬取穩(wěn)定性。進一步的,本系統(tǒng)將爬蟲任務(wù)隊列存儲于Redis內(nèi)存型數(shù)據(jù)庫中,替代了scrapy框架原有在本地內(nèi)存上創(chuàng)建任務(wù)隊列存儲,實現(xiàn)多個不同機器上的scrapy都可以從一個數(shù)據(jù)庫獲取任務(wù)進行分布式爬取,進一步提升了系統(tǒng)的爬取效率。結(jié)合附圖閱讀本專利技術(shù)實施方式的詳細描述后,本專利技術(shù)的其他特點和優(yōu)點將變得更加清楚。附圖說明圖1為本專利技術(shù)提出的基于scrapy爬蟲框架的數(shù)據(jù)采集系統(tǒng)的架構(gòu)圖;圖2為本專利技術(shù)提出的基于scrapy爬蟲框架的數(shù)據(jù)采集方法的流程圖。具體實施方式下面結(jié)合附圖對本專利技術(shù)的具體實施方式作進一步詳細的說明。本專利技術(shù)提出的基于scrapy爬蟲框架的數(shù)據(jù)采集系統(tǒng),如圖1所示,包括爬蟲隊列模塊1、爬蟲執(zhí)行模塊2和任務(wù)調(diào)度模塊3;其中,爬蟲隊列模塊1包括爬蟲種子隊列11、爬蟲種子處理單元12和爬蟲任務(wù)隊列13;爬蟲執(zhí)行模塊2包括網(wǎng)頁下載單元21和URL挖掘單元22;任務(wù)調(diào)度模塊3包括爬蟲進程隊列31和進程管理器32。爬蟲種子隊列11用于存儲爬蟲任務(wù),包括但不限定于用戶發(fā)出的爬蟲任務(wù)以及爬蟲執(zhí)行模塊2提交的新的爬蟲任務(wù);爬蟲種子處理單元12用于對爬蟲種子隊列中的爬蟲任務(wù)進行去重篩選處理,并將去重篩選后的爬蟲任務(wù)存儲入爬蟲任務(wù)隊列13中;爬蟲任務(wù)隊列13中的爬蟲任務(wù)需要提交給進程管理器32。網(wǎng)頁下載單元21用于從爬蟲任務(wù)隊列中讀取當(dāng)前需要執(zhí)行的爬蟲任務(wù),基于讀取到的爬蟲任務(wù)下載網(wǎng)頁;URL挖掘單元22用于在下載到的網(wǎng)頁中提取到新的URL鏈接作為新的爬蟲任務(wù)存入爬蟲種子隊本文檔來自技高網(wǎng)...
【技術(shù)保護點】
1.一種基于scrapy爬蟲框架的數(shù)據(jù)采集系統(tǒng),其特征在于,包括:/n爬蟲隊列模塊,包括爬蟲種子隊列、爬蟲種子處理單元和爬蟲任務(wù)隊列;所述爬蟲種子隊列,用于存儲爬蟲任務(wù);所述爬蟲種子處理單元,用于對爬蟲種子隊列中的爬蟲任務(wù)進行去重篩選處理,并將去重篩選后的爬蟲任務(wù)存儲入爬蟲任務(wù)隊列;/n爬蟲執(zhí)行模塊,包括網(wǎng)頁下載單元和URL挖掘單元;所述網(wǎng)頁下載單元,用于從爬蟲任務(wù)隊列中讀取當(dāng)前需要執(zhí)行的爬蟲任務(wù),基于讀取到的爬蟲任務(wù)下載網(wǎng)頁;所述URL挖掘單元,用于在下載到的網(wǎng)頁中提取到新的URL鏈接作為新的爬蟲任務(wù)存入所述爬蟲種子隊列。/n
【技術(shù)特征摘要】
1.一種基于scrapy爬蟲框架的數(shù)據(jù)采集系統(tǒng),其特征在于,包括:
爬蟲隊列模塊,包括爬蟲種子隊列、爬蟲種子處理單元和爬蟲任務(wù)隊列;所述爬蟲種子隊列,用于存儲爬蟲任務(wù);所述爬蟲種子處理單元,用于對爬蟲種子隊列中的爬蟲任務(wù)進行去重篩選處理,并將去重篩選后的爬蟲任務(wù)存儲入爬蟲任務(wù)隊列;
爬蟲執(zhí)行模塊,包括網(wǎng)頁下載單元和URL挖掘單元;所述網(wǎng)頁下載單元,用于從爬蟲任務(wù)隊列中讀取當(dāng)前需要執(zhí)行的爬蟲任務(wù),基于讀取到的爬蟲任務(wù)下載網(wǎng)頁;所述URL挖掘單元,用于在下載到的網(wǎng)頁中提取到新的URL鏈接作為新的爬蟲任務(wù)存入所述爬蟲種子隊列。
2.根據(jù)權(quán)利要求1所述的基于scrapy爬蟲框架的數(shù)據(jù)采集系統(tǒng),其特征在于,所述系統(tǒng)還包括:
任務(wù)調(diào)度模塊,包括爬蟲進程隊列和進程管理器;
其中,所述進程管理器,用于根據(jù)控制信息和爬蟲任務(wù)隊列信息創(chuàng)建爬蟲進程,將創(chuàng)建的爬蟲進程加入所述爬蟲進程隊列并進行管理,以及控制所述網(wǎng)頁下載單元下載網(wǎng)頁;所述爬蟲進程隊列,用于存儲當(dāng)前正在執(zhí)行、暫時掛起和已經(jīng)結(jié)束的爬蟲進程。
3.根據(jù)權(quán)利要求1所述的基于scrapy爬蟲框架的數(shù)據(jù)采集系統(tǒng),其特征在于,所述系統(tǒng)還包括:
Kafka消息庫,用于存儲所述爬蟲種子隊列。
4.根據(jù)權(quán)利要求1所述的基于scrapy爬蟲框架的數(shù)據(jù)采集系統(tǒng),其特征在于,所述系統(tǒng)還包括:
Redis數(shù)據(jù)庫,用于存儲所述爬蟲任務(wù)隊列。
5.根據(jù)權(quán)利要求1所述的基于scrapy爬蟲框架的數(shù)據(jù)采集系統(tǒng),其特征在于,所述系統(tǒng)還包括:
MongoDB數(shù)據(jù)庫,用于存儲所述網(wǎng)頁下載單元下載的網(wǎng)頁內(nèi)容。
6.根據(jù)權(quán)利要求1所述的基于scrapy爬蟲框架的數(shù)據(jù)采集系統(tǒng),其特征在于,所述爬蟲種子處理單元包括:
去重...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:魏志強,賈東寧,聶為之,劉安安,蘇育挺,
申請(專利權(quán))人:青島海洋科學(xué)與技術(shù)國家實驗室發(fā)展中心,
類型:發(fā)明
國別省市:山東;37
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。