鞏保勝,魏春苗
(61243部隊(duì),新疆 烏魯木齊830006)
?
基于網(wǎng)絡(luò)爬蟲的地理空間信息采集方法
鞏保勝,魏春苗
(61243部隊(duì),新疆 烏魯木齊830006)
摘要:網(wǎng)絡(luò)環(huán)境下地理空間信息的搜集與獲取,是地理空間研究信息獲取重要途徑。網(wǎng)絡(luò)環(huán)境中數(shù)據(jù)信息量大,主題門類多,如何高效快速地獲取地理空間主題信息是一個(gè)亟待解決的問題。本研究提出了基于網(wǎng)絡(luò)爬蟲的地理空間主題信息采集方法,該方法能高效自動的采集目標(biāo)網(wǎng)絡(luò)上的地理空間信息,提高了地理空間信息采集效率,為進(jìn)一步建立地理空間主題信息庫提供數(shù)據(jù)支撐。
關(guān)鍵詞:信息采集;網(wǎng)絡(luò)爬蟲;地理空間信息;Scrapy
近年來,隨著互聯(lián)網(wǎng),云計(jì)算等IT與通信技術(shù)的迅猛發(fā)展,信息社會已進(jìn)入了大數(shù)據(jù)時(shí)代[1],網(wǎng)絡(luò)上地理空間主題相關(guān)信息越來越多[2],除Google地圖,百度地圖以及一些符合標(biāo)準(zhǔn)(OGCWMS、WFS、WCS)的地理空間信息服務(wù)網(wǎng)站外,還有一些網(wǎng)絡(luò)服務(wù)(例如開放大學(xué)圖書館)也包含了此類信息。這些地理空間信息的獲取需要從半結(jié)構(gòu)化或無結(jié)構(gòu)的Web頁面中準(zhǔn)確的抽取數(shù)據(jù),轉(zhuǎn)換成結(jié)構(gòu)化的數(shù)據(jù)以進(jìn)行挖掘和利用。網(wǎng)絡(luò)爬蟲[3]可以自動爬取目標(biāo)網(wǎng)站,實(shí)現(xiàn)精準(zhǔn)的網(wǎng)頁信息采集,根據(jù)需要還可將采集數(shù)據(jù)存入數(shù)據(jù)庫中,構(gòu)建地理空間主題信息檢索[4],為更深層次的用戶提供更專業(yè)的目標(biāo)信息檢索。
網(wǎng)絡(luò)爬蟲[5]是一個(gè)自動提取網(wǎng)頁的程序,它為搜索引擎從Web上下載網(wǎng)頁,是搜索引擎的重要組成部分。其基本原理是從一些“目標(biāo)”站點(diǎn)出發(fā),通過HTTP等協(xié)議請求并獲取網(wǎng)頁資源,分析頁面內(nèi)容并提取鏈接,以循環(huán)迭代的方式訪問整個(gè)目標(biāo)網(wǎng)絡(luò)。網(wǎng)絡(luò)爬蟲有選擇的訪問相關(guān)網(wǎng)頁和鏈接,釆集數(shù)據(jù),并將數(shù)據(jù)按照規(guī)定的格式存儲。
網(wǎng)絡(luò)爬蟲的工作步驟(如圖1所示),首先通過通用搜索引擎,挑選符合目標(biāo)預(yù)期的網(wǎng)頁加入目標(biāo)網(wǎng)址隊(duì)列,然后網(wǎng)絡(luò)爬蟲依次讀取網(wǎng)站地址,訪問網(wǎng)頁讀取網(wǎng)頁內(nèi)容,然后結(jié)構(gòu)化抽取網(wǎng)頁中的目標(biāo)數(shù)據(jù),另一方面解析出網(wǎng)頁內(nèi)容里包含的其他網(wǎng)址,并通過判重算法判斷是否己經(jīng)抓取過,如果網(wǎng)址未曾抓取過,則將其放入該隊(duì)列中,如果網(wǎng)址曾被抓取過,則放入已抓取網(wǎng)址隊(duì)列中,如此循環(huán),直到網(wǎng)址隊(duì)列為空為止。網(wǎng)絡(luò)爬蟲保證了搜索結(jié)果的領(lǐng)域相關(guān)性,排除了很多與查詢無關(guān)的頁面,極大程度上滿足了人們對搜索準(zhǔn)確性的要求。

圖1 網(wǎng)絡(luò)爬蟲工作流程圖
利用網(wǎng)絡(luò)爬蟲采集地理空間信息是網(wǎng)絡(luò)環(huán)境下地理空間信息采集的重要手段。具體工作流程如圖2所示。

圖2 地理空間信息采集流程圖
首先,對擬獲取的地理空間信息建立索引關(guān)鍵字,在通用搜索引擎中建立搜索式,通過優(yōu)化搜索式,提高通用搜索引擎的搜索效率和目標(biāo)匹配度。
其次,通過人工查看、干預(yù)的方式,對搜索出來的相關(guān)網(wǎng)站,網(wǎng)頁進(jìn)行預(yù)判斷,進(jìn)一步提高網(wǎng)站與關(guān)鍵詞的相關(guān)度。最后確立需要進(jìn)行地理空間信息采集的目標(biāo)網(wǎng)站。
第三步就是利用網(wǎng)絡(luò)爬蟲對整個(gè)目標(biāo)搜索網(wǎng)站集進(jìn)行搜索,記錄搜索目標(biāo)地理空間信息有關(guān)的文本信息,形成地理空間信息搜集信息庫,為進(jìn)一步的數(shù)據(jù)挖掘和后續(xù)處理提供數(shù)據(jù)支撐。
最后,如果目標(biāo)網(wǎng)站價(jià)值較高,需要持續(xù)跟蹤,可以利用網(wǎng)絡(luò)爬蟲定期對網(wǎng)站內(nèi)容進(jìn)行爬取,檢測網(wǎng)站上需要關(guān)注的地理空間信息,實(shí)現(xiàn)地理空間信息跟蹤的自動化。
以德克薩斯大學(xué)圖書館網(wǎng)站的收錄地圖網(wǎng)頁作為目標(biāo)網(wǎng)站進(jìn)行地理空間信息采集,本研究以Scrapy框架構(gòu)建網(wǎng)絡(luò)爬蟲,Scrapy是Python開發(fā)的快速Web信息采集框架,用于抓取web站點(diǎn)并從頁面中提取數(shù)據(jù)。
首先創(chuàng)建一個(gè)信息采集項(xiàng)目,名稱為Mymap。在Scrapy下運(yùn)行:scrapystartprojectMymap命令。該命令將會創(chuàng)建包含網(wǎng)絡(luò)爬蟲的內(nèi)容目錄。

item.py中定義了你要采集的目標(biāo)變量。目標(biāo)網(wǎng)站信息如圖3所示。

圖3 目標(biāo)網(wǎng)頁源碼
本研究中需要采集亞洲地區(qū)的掃描地圖數(shù)據(jù)信息,通過上圖可以看出,該信息包含了掃描地圖的網(wǎng)絡(luò)連接,圖幅區(qū)域和掃描圖其他信息,所以item對象定義為:
importScrapy
classMymapItem(scrapy.Item)
url=scrapy.Field();
region=scrapy.Field();
info=scrapy.Field();
Spiders.py定義了如何爬去某個(gè)網(wǎng)站,包括了爬取的動作以及如何從網(wǎng)頁的內(nèi)容中提取結(jié)構(gòu)化數(shù)據(jù)(爬取item),是定義爬取的動作及分析某個(gè)網(wǎng)頁(或者是有些網(wǎng)頁)的地方。Scrapy提取數(shù)據(jù)有自己的機(jī)制,通過特定的XPath或者CSS表達(dá)式來“選擇”HTML文件中的某個(gè)部分。本采集部分代碼如下:

利用Xpath,通過Scrapy自動提取html中a、href、li標(biāo)簽的相應(yīng)屬性,實(shí)現(xiàn)了目標(biāo)網(wǎng)頁信息采集。最終采集到的網(wǎng)頁信息如圖4所示。

圖4 地圖信息采集結(jié)果
通過圖4可以看出,利用Scrapy構(gòu)建的網(wǎng)絡(luò)爬蟲,能精準(zhǔn)的對目標(biāo)網(wǎng)頁信息進(jìn)行采集。后續(xù)如果還需對該網(wǎng)頁持續(xù)跟蹤,可將該網(wǎng)站加入目標(biāo)網(wǎng)址庫,定期利用Scrapy爬蟲進(jìn)行數(shù)據(jù)采集。
網(wǎng)絡(luò)環(huán)境下的地理空間主題信息采集是地理空間研究重要數(shù)據(jù)來源,本研究分析了目前信息采集的作業(yè)流程,提出了用網(wǎng)絡(luò)爬蟲采集網(wǎng)站信息的工作流程方法。該方法能精準(zhǔn)的提取網(wǎng)頁數(shù)據(jù),提高數(shù)據(jù)采集的自動化程度,為后續(xù)地理空間信息主題庫的建立,以及數(shù)據(jù)挖掘提供數(shù)據(jù)支撐。
參考文獻(xiàn):
[1]王元卓,靳小龍,程學(xué)旗.網(wǎng)絡(luò)大數(shù)據(jù):現(xiàn)狀與展望[J].計(jì)算機(jī)學(xué)報(bào),2013,36(6):1125-1135.
[2]孫瑞英.網(wǎng)絡(luò)數(shù)據(jù)內(nèi)容分析研究[J].圖書館學(xué)研究,2005 (5):35-39.
[3]劉金紅,陸余良.主題網(wǎng)絡(luò)爬蟲研究綜述[J].計(jì)算機(jī)應(yīng)用研究,2007,24(10):26-29.
[4]王曙,吉雷靜,張雪英.面向網(wǎng)頁文本的地理要素變化檢測[J].地球信息科學(xué)學(xué)報(bào),2013(10):15-5.
[5]羅剛,王振東.自己動手寫網(wǎng)絡(luò)爬蟲[M].清華大學(xué)出版社, 2010.
中圖分類號:TP391.3