趙春霞(青島職業技術學院,青島,255666)
網站采集器技術分析與設計
趙春霞
(青島職業技術學院,青島,255666)
近年來,隨著國內大數據戰略越來越清晰,對網站數據抓取和信息采集技術要求越來越高,然而信息采集技術相對比較薄弱,筆者通過對網站采集器的技術進行分析,并提出了一些可實施的規則和措施,用于技術指導。
網站采集器;規則 ;正則表達式
網站采集,就是從網站頁面中自動抽取指定的數據,完成數據采集的工作,需要配置一些規則來指導計算機的操作,這個規則的組合稱之為“采集任務”,采集任務中至少要包括網頁地址、網頁的拷貝數據的規則。
2.1 單個網頁采集數據的規則
2.1.1 按照字符串獲取的規則來指導計算機采集數據,一個網頁是由瀏覽器網頁源碼進行解析后展示的結果,任何瀏覽器都可查看網頁源碼,打開網頁源碼后,在網頁源碼中通常(注意:是通常)都可以找到網頁顯示的內容,自然文章標題也可以找到,找到文章標題后,告訴計算機要采集這個標題數據,規則就是:從哪個字符開始獲取到那個字符結束,例如:“”這樣一個字符串,要獲取“今天的天氣很好啊”,就是告訴計算機從“”結束,將中間的字符采集下來,計算機就會對這個字符串進行識別,并按照定制的規則將所需要的數據獲取。采集數據,就是要配置這樣的規則來指導計算機將網頁數據逐一采集下來;(2)第二種方式來指導計算機采集數據:通常情況網頁的源碼是一個XML文檔,網頁源碼是一個結構化的、具有標記識別的一種文檔。這樣,可以通過一種方式來標記需要采集的數據,讓計算機自動尋找并獲取數據,這種方式也就是常見的可視化采集??梢暬杉暮诵氖荴Path信息,XPath是XML路徑語言(XML Path Language),它是一種用來確定XML文檔中某部分位置的語言。用XPath來制定文檔某個位置的數據,讓計算機來采集,這樣也實現了指導計算機采集數據的需求;
2.1.2 采集N個有規則的頁面
要采集N個有規則的頁面,需要找到這N多個網頁的規則,用一種規則來讓計算機自動解析完成N多個網頁的構成。這種解析可以由一下幾種方式:
按照一個可識別的規則解析,譬如:數字遞增,字母遞增或日期遞增,舉個例子:http://www.******.com/article.aspx?id=1001,這是一個文章的Url,比較容易理解,id是url提交的參數,1001是一個參數值,代表一篇文章,那么就可以通過數字遞增的形式來替代它,http://www.******.com/article.aspx?id= {Num:1001,1999,1},這 樣 就 完 成了998篇文章url的構成,系統會自動將url解析出來,{Num:1001,1999,1}是一個數字遞增的參數,從1001開始遞增,每次遞增加1,直至1999結束??梢栽诓杉蝿罩刑峁┝撕芏噙@樣的參數來幫助用戶完成N多url的構成;
有些Url并不一定可以通過一定可識別的規則來構成,那該如何?譬如:http://www.******.com/s.aspx?area=北京,這是一個帶入了地區參數的Url,全國有眾多的城市,總不能一個一個輸入。針對這種Url,可以用字典參數,首先將全國城市數據獲取,建立在字典中,然后通過配置url完成這種貌似無規則url的構成,http://www.******.com/s.aspx?area= {Dict:城市},這個參數表示了使用字典:城市的值,這樣也可以完成成批Url的構成。
按照網站的數據組織結構來成批配置Url,瀏覽一個網站通常是從網站的首頁進入,而網站為了更好的讓用戶找到期望看到的信息,都會按照一定的分類結構對數據進行組織,并提供一個列表對數據進行展示,分類一般都是網站的頻道,列表通常是一個頻道下的列表(數據索引)頁面,由于數據眾多,這個頁面可能會有翻頁,也可能還會進行子類的劃分。所以,可以通過這個方式進行成批Url的配置。這個配置的過程,需要在采集任務中需要配置導航規則、翻頁規則。
導航規則:導航就是從一個頁面進入另外一個頁面的操作,網站的首頁就是一個導航頁,首頁會有很多的欄目入口,點擊就可以進入各個欄目,導航就是讓計算機自動進入每個欄目,導航可以有很多,代表的就是從一個導航頁進入一個欄目,再進入一個子欄目,再進入一個詳細的頁面,如果詳細頁還需要提取更多的數據,那么還需要導航進入,就好像在瀏覽數據一樣,從一個頁面進入另一個頁面,再進入一個頁面,每個導航頁都帶有了大量的需要采集數據的url,系統會自動獲取這些url來實現成批數據的采集;
翻頁規則:當數據量大的時候,網站會提供翻頁操作,很典型的就是新聞列表頁,會有很多新聞,第一頁一直到第N頁,所以,為了可以獲取第1頁以后的數據,還需要告訴計算機如何翻頁,這個就是翻頁規則,讓計算機就像瀏覽網頁一樣,一頁一頁翻,直至最后一頁,將數據獲取。
在實際的數據采集過程中,采集的數據質量可能并不一定可以滿足的要求,譬如:帶有了很多的無用網頁信息,也可能在用規則匹配的時候會很難找到準確的起始采集的字符和終止采集的字符。可借鑒以下采集數據規則匹配的一些技巧,和數據加工的操作,從而獲取高質量的數據。
根據用戶規則采集數據的核心是正則表達式匹配,正則表達式是指一個用來描述或者匹配一系列符合某個句法規則的字符串的單個字符串。正則在匹配(或者可以說是獲?。┳址畷r是非常方便的,但其又很不容易理解,所以需要采集器使用界面化的配置方式讓用戶輸入獲取字符的起始位置和終止位置來自動構成一個正則表達式,進行數據的獲取。不同的采集器核心對正則匹配的規則構成是不一樣的。因此可以采用一些面向正則良好的信息來配置規則,甚至可以用正則通配符來提升采集數據的準確度,更甚可以自定義正則進行數據的匹配(一般都是高級用戶來使用)。
采集數據加工是一項非常有必要且很重要的功能,采集的數據并不一定是想要的最終數據,例如采集的文章正文,通常都會帶有在很多情況下,在瀏覽網頁時可以看到數據,但查看源碼時卻無法找到需要采集的數據。這種情況通常是網站采用了ajax 或iframe技術,如果你使用的事firefox瀏覽器,可以在頁面鼠標右擊需要采集的數據,會彈出一個菜單,在菜單項中找是否有“此框架”的菜單項,如果有,那就是iframe,如果沒有就是ajax。Ajax一種創建交互式網頁應用的網頁開發技術。使用js請求xml數據并展示到網頁中,這個請求的數據是在網頁中無法查詢到的。遇到這種情況可以使用http嗅探器來查找js請求數據的url,這個網址就是需要采集數據的url。
可能還會遇到另外一種情況,url配置正確,采集的數據也可以通過網頁源碼看到,但實際采集的時候,卻無法采集到數據或出現了錯誤。這種情況有可能需要配置兩個信息:cookie 和user-agent;部分網站即便是匿名訪問系統也會分配一個cookie信息用戶身份識別,User Agent中文名為用戶代理,使得服務器能夠識別客戶使用的操作系統及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。一些網站常常通過判斷 User Agent 來給不同的操作系統、不同的瀏覽器發送不同的頁面,因此可能造成某些頁面無法在某個瀏覽器中正常顯示,無論是cookie還是user-agent都可以通過網絡嗅探器來進行查看獲取信息。
現在很多行業網站都是用戶會員授權的,所以需要采集的數據也是需要會員身份的,會員必須登錄后才能看到這些數據,在進行數據采集時,也是需要進行登錄身份驗證的,在進行登錄采集時,通常系統都是記錄cookie信息,在請求網頁時一并發送,讓網站進行身份驗證,從而獲取數據。所以,在采集登錄網頁時,要記錄登錄的cookie信息。
趙春霞,性別:女(1975.2-),漢族,碩士,副教授,籍貫:山西省平陸縣,研究方向:軟件開發。
Technical analysis and design of website collector
Zhao Chunxia
(Qingdao Technical College,Qingdao,255666)
In recent years,as domestic big data strategy has become increasingly clear,crawling the site data and information gathering techniques have been demanded increasingly,however,information gathering technology is relatively weak,the author analysised the site collector techniques,and made a number of rules and measures that can be implemented for technical guidance.
the site collector;rule;Regular Expressions
院級課題項目:基于開源Web CMS的校園網站設計與實現(課題編號:11-A-5)