馮玲 黃亮 曾李陽 朱齊華
摘 要:本文針對(duì)單機(jī)網(wǎng)絡(luò)爬蟲獲取Web空間數(shù)據(jù)在抓取覆蓋率和抓取效率上均受到一定程度的限制,難以保證所抓取數(shù)據(jù)的及時(shí)性以及全面性問題,研究了基于分布式網(wǎng)絡(luò)爬蟲的Web空間數(shù)據(jù)獲取方法,設(shè)計(jì)了基于分布式網(wǎng)絡(luò)爬蟲的Web空間數(shù)據(jù)獲取原型系統(tǒng)并且最終實(shí)現(xiàn),并且通過對(duì)原型系統(tǒng)進(jìn)行相關(guān)的測(cè)試來證實(shí)了本文所提出解決方法的有效性。
關(guān)鍵詞:Web空間數(shù)據(jù);分布式網(wǎng)絡(luò)爬蟲;原型系統(tǒng)
中圖分類號(hào):P208
文獻(xiàn)標(biāo)識(shí)碼: A
GIS是一門以數(shù)據(jù)為基礎(chǔ)的學(xué)科,空間分析、空間統(tǒng)計(jì)和空間數(shù)據(jù)挖掘等研究都離不開空間數(shù)據(jù)的支撐,而互聯(lián)網(wǎng)中存在海量空間數(shù)據(jù),這些數(shù)據(jù)與人們的日常生活活動(dòng)密切相關(guān)并且包含的信息量十分豐富、現(xiàn)勢(shì)性極強(qiáng)。如果能夠?qū)ヂ?lián)網(wǎng)中廣泛存在的空間數(shù)據(jù)高效地進(jìn)行獲取,一方面可以補(bǔ)充基礎(chǔ)地理信息的不足,提供豐富的細(xì)節(jié)和準(zhǔn)實(shí)時(shí)更新,另一方面還能夠?yàn)镚IS空間分析和空間數(shù)據(jù)挖掘提供信息量豐富、高時(shí)效性的數(shù)據(jù)源。
Web空間數(shù)據(jù)獲取主要采用網(wǎng)絡(luò)爬蟲技術(shù),國(guó)內(nèi)外許多學(xué)者在這方面進(jìn)行了研究。Leasure D R指出,利用網(wǎng)絡(luò)爬蟲技術(shù),可以豐富GIS空間分析的數(shù)據(jù)來源[1]。 Tezuka T等研究提出的網(wǎng)絡(luò)爬蟲技術(shù)降低了Web空間數(shù)據(jù)獲取的難度[2]。Zhang C J提出了基于網(wǎng)絡(luò)爬蟲技術(shù)的地名地址庫(kù)更新方法[3]。Hua ̄Ping Zhang等研究了從互聯(lián)網(wǎng)新聞報(bào)道中自動(dòng)提取POI數(shù)據(jù)的方法[4]。Li W研究了基于網(wǎng)絡(luò)爬蟲的OGC服務(wù)發(fā)現(xiàn)方法[5]。Chen X基于網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)了自動(dòng)化發(fā)現(xiàn)和檢索WMS服務(wù)[6]。Jiang J研究了檢索WFS服務(wù)的網(wǎng)絡(luò)爬蟲[7]。王明軍在普通網(wǎng)絡(luò)爬蟲技術(shù)基礎(chǔ)上提出了空間敏感爬蟲的思想體系,并從多個(gè)方面對(duì)其進(jìn)行了闡述[8]。蔡地在研究開源網(wǎng)絡(luò)爬蟲框架的基礎(chǔ)上,提出通過多線程和異步I/O兩種策略來優(yōu)化Web空間數(shù)據(jù)的獲取效率[9]。Ager A則在研究中指出,如果能夠?qū)eb空間數(shù)據(jù)進(jìn)行有效的利用,將對(duì)GIS的發(fā)展產(chǎn)生深遠(yuǎn)的影響[10]。
通過分析國(guó)內(nèi)外研究現(xiàn)狀發(fā)現(xiàn),目前基于網(wǎng)絡(luò)爬蟲的Web空間數(shù)據(jù)獲取研究大多數(shù)采用單機(jī)網(wǎng)絡(luò)爬蟲的形式。然而,Web空間數(shù)據(jù)廣泛分布于不同的網(wǎng)絡(luò)站點(diǎn)中且更新頻率快,依賴單機(jī)網(wǎng)絡(luò)爬蟲抓取數(shù)據(jù)在抓取覆蓋率和效率上難以滿足需求,難以保證抓取數(shù)據(jù)的及時(shí)性和全面性,因此本文針對(duì)單機(jī)網(wǎng)絡(luò)爬蟲獲取Web空間數(shù)據(jù)存在的問題,研究基于分布式網(wǎng)絡(luò)爬蟲提高Web空間數(shù)據(jù)獲取效率。
1 分布式網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)原理
基于分布式網(wǎng)絡(luò)爬蟲的Web空間數(shù)據(jù)獲取方法不是通過增加單個(gè)爬蟲系統(tǒng)的負(fù)荷而是通過增加更多的爬蟲系統(tǒng)成員來提高數(shù)據(jù)獲取性能和效率,即采用多臺(tái)性能一般的機(jī)器來做數(shù)據(jù)抓取,同時(shí)在每臺(tái)機(jī)器上部署多個(gè)爬蟲,增加數(shù)據(jù)抓取的并發(fā)性。具體的實(shí)現(xiàn)方式是采用不同的機(jī)器承擔(dān)不同的角色分工,選取一臺(tái)性能較好的機(jī)器專門負(fù)責(zé)URL(Uniform Resoure Locator,統(tǒng)一資源定位器)的統(tǒng)一調(diào)度和去重,將這臺(tái)機(jī)器稱為主節(jié)點(diǎn),主要用來管理和維護(hù)待爬取URL隊(duì)列和已爬取URL隊(duì)列。采用多臺(tái)性能一般的機(jī)器進(jìn)行實(shí)際的網(wǎng)頁下載和數(shù)據(jù)解析,把這些機(jī)器稱為爬蟲節(jié)點(diǎn)。
本文提出的分布式網(wǎng)絡(luò)爬蟲的運(yùn)行原理如圖1所示,爬蟲節(jié)點(diǎn)從主節(jié)點(diǎn)請(qǐng)求URL進(jìn)行數(shù)據(jù)抓取,在抓取數(shù)據(jù)的同時(shí)生成新的URL,并將此URL發(fā)送給主節(jié)點(diǎn),主節(jié)點(diǎn)負(fù)責(zé)對(duì)爬蟲節(jié)點(diǎn)提交的URL進(jìn)行去重,并將其加入待爬取URL隊(duì)列。爬蟲節(jié)點(diǎn)之間沒有通信聯(lián)系,每個(gè)爬蟲節(jié)點(diǎn)只和主節(jié)點(diǎn)進(jìn)行通信,主節(jié)點(diǎn)通過一個(gè)地址列表來保存系統(tǒng)中所有爬蟲節(jié)點(diǎn)的信息。因此,當(dāng)分布式網(wǎng)絡(luò)爬蟲系統(tǒng)中的節(jié)點(diǎn)有變化的時(shí)候(新增爬蟲節(jié)點(diǎn),刪除某爬蟲節(jié)點(diǎn),或爬蟲節(jié)點(diǎn)地址發(fā)生變化),主節(jié)點(diǎn)只需調(diào)整地址列表中數(shù)據(jù),爬蟲節(jié)點(diǎn)只需要負(fù)責(zé)抓取數(shù)據(jù)。同時(shí),主節(jié)點(diǎn)負(fù)責(zé)對(duì)分布式網(wǎng)絡(luò)爬蟲系統(tǒng)中各爬蟲節(jié)點(diǎn)進(jìn)行負(fù)載均衡。
4 結(jié)束語
本文針對(duì)單機(jī)網(wǎng)絡(luò)爬蟲獲取Web空間數(shù)據(jù)在抓取覆蓋率和抓取效率上受到限制,難以保證抓取數(shù)據(jù)的及時(shí)性和全面性的問題,研究了基于分布式網(wǎng)絡(luò)爬蟲的Web空間數(shù)據(jù)獲取方法。通過實(shí)驗(yàn)分析對(duì)比證明,本文提出的基于分布式網(wǎng)絡(luò)爬蟲的Web空間數(shù)據(jù)獲取方法能夠提高Web空間數(shù)據(jù)獲取效率,設(shè)計(jì)和實(shí)現(xiàn)的Web空間數(shù)據(jù)獲取原型系統(tǒng)能夠穩(wěn)定運(yùn)行,并且系統(tǒng)具有良好的擴(kuò)展性,系統(tǒng)各個(gè)節(jié)點(diǎn)之間能夠?qū)崿F(xiàn)負(fù)載均衡。
參考文獻(xiàn):
[1]Leasure D R. Geodata Crawler:A centralized national geodatabase and automated multi-scale data crawler to overcome GIS bottlenecks in data analysis workflows[C].Dresden,Germany:Esa Convention, 2013.
[2]Tezuka T,Kurashima T,Tanaka K. Toward tighter integration of web search with a Geographic information system[C]//Proceedings of the 15th international conference on World Wide Web.Edinburgh: ACM,2006:277-286.
[3]Zhang C J,Zhang X Y,ZhuS N,et al. Method of Toponym Database Updating Based on Web Crawler[J]. J.Geo ̄Inf. SCI,2011,13:492-499.
[4]Hua ̄Ping Zhang,Qian Mo.Structured POI data Extraction from Internet News[C].Beijing: The 4th International Universal Communication Symposium (IUCS),2010.
[5]Li W,Yang C. An active crawler for discovering geospatial web services and their distribution pattern ̄a case of study of OGC web map service [J].International Journal Geographical Information Science,2010,24(8):1127-1147.
[6]CHEN X,CHEN R,WEI W. Design and Realization of Web Service Snatch and Parse Engine Based on Web Crawler [J].Geomatics World,2010,3:016.
[7]Jiang J,Yang C,Ren Y .A spatial information crawler for opengis wfs [C]//The 6th International Conference on Advanced Optical Materials and Devices. Guangzhou: International Society for Optics and Photonics,2008:71432C-9.
[8]王明軍.基于Web的空間數(shù)據(jù)爬取與度量研究[D].武漢: 武漢大學(xué),2013.
[9]蔡地.互聯(lián)網(wǎng)多源矢量空間數(shù)據(jù)自動(dòng)獲取與管理方法研究[D].北京:中國(guó)測(cè)繪科學(xué)研究院,2015.
[10]Ager A,Schrader ̄Patton C,Bunzel K,et al. Internet Map Services:New portal for global ecological monitoring,or geodata junkyard?[C]//Proceedings of the 1st International Conference and Exhibition on Computing for Geospatial Research & Application. Washington, DC, USA: ACM,2010:37.
[11]Ryan Mitchell. Web Scraping with Python[M].Sebastopol:O’Reilly Media,Inc, 2015:7-24.
[12]Scrapy developers. Scrapy Documentation Release 1.0.3[EB/OL].(2015-8-15)https://pypi.org/project/Scrapy/1.0.3/.
[13]阮正杰.基于Twisted架構(gòu)的GPS協(xié)議轉(zhuǎn)換軟網(wǎng)關(guān)的設(shè)計(jì)與實(shí)現(xiàn)[D].杭州:浙江工業(yè)大學(xué),2013.
(責(zé)任編輯:曾 晶)