前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇網(wǎng)絡(luò)爬蟲范文,相信會為您的寫作帶來幫助,發(fā)現(xiàn)更多的寫作思路和靈感。
關(guān)鍵詞:網(wǎng)絡(luò)輿情;網(wǎng)絡(luò)爬蟲;網(wǎng)絡(luò)資源;爬蟲測速;主題更改
中圖分類號:TP391.3
21世紀是信息科學(xué)技術(shù)飛速發(fā)展的世紀,互聯(lián)網(wǎng)在生活中的應(yīng)用越來越廣泛,尤其是隨著智能手機逐漸普遍,人們能夠通過移動互聯(lián)網(wǎng)更加便捷地獲得外部資訊。網(wǎng)絡(luò)輿情是當前網(wǎng)民們針對熱點社會事件以及社會政治經(jīng)濟狀況等內(nèi)容反映出的態(tài)度總和。“管中窺豹,時見一斑”,可以說網(wǎng)絡(luò)輿情就是當前社會現(xiàn)狀的放大鏡,針對這些態(tài)度思想及政治傾向的社會輿論信息的收集整合,是分析社會動向、研究人民需求的重要手段。
互聯(lián)網(wǎng)引擎搜索技術(shù)并未完全成熟,在很多具體環(huán)節(jié)仍舊存在著缺點,嚴重制約著網(wǎng)絡(luò)輿情監(jiān)測工作的全面展開。傳統(tǒng)的網(wǎng)絡(luò)爬蟲技術(shù)在進行網(wǎng)絡(luò)信息的獲取時,對其內(nèi)容的處理精確性和不足,存在著無用信息過多和部分關(guān)鍵信息缺失的情況。因而,針對網(wǎng)絡(luò)爬蟲技術(shù)進行研究,提出更為有效的優(yōu)化措施是一項十分必要的工作。
1 互聯(lián)網(wǎng)輿情檢索技術(shù)
現(xiàn)階段建設(shè)的網(wǎng)絡(luò)輿情監(jiān)測系統(tǒng)基本涵蓋了所有互聯(lián)網(wǎng)領(lǐng)域的基本技術(shù),是一項復(fù)雜而龐大工程。但從系統(tǒng)的功能實現(xiàn)上看,輿情監(jiān)測系統(tǒng)的關(guān)鍵技術(shù)是由互聯(lián)網(wǎng)信息采集技術(shù)和文本信息抽取技術(shù)構(gòu)成的。
1.1 互聯(lián)網(wǎng)信息采集技術(shù)簡介
作為互聯(lián)網(wǎng)搜索引擎獲得信息的基本技術(shù),信息采集技術(shù)的實現(xiàn)方法包括元搜索和網(wǎng)絡(luò)爬蟲兩種模式。這也是當前網(wǎng)絡(luò)輿情監(jiān)測信息獲得的主要途徑。
所謂元搜索技術(shù),就是在檢索過程中將多個網(wǎng)絡(luò)搜索引擎以串聯(lián)的方式運行,監(jiān)測方提交的搜索條件被初步處理后,分送給這些串行的搜索引擎,由其各自完成對相應(yīng)數(shù)據(jù)庫信息的檢索工作,在獲得初步搜索結(jié)果后,再將這部分信息進行二次加工,通過去重、排序、過濾等方式完成冗余信息的處理。元搜索技術(shù)在檢索信息全面性方面要明顯優(yōu)于單搜索引擎技術(shù)。同時,元搜索技術(shù)在進行信息檢索時并不需要對所有互聯(lián)網(wǎng)信息進行搜索,具有明顯的效率優(yōu)勢。
1.2 網(wǎng)頁信息抽取及預(yù)處理技術(shù)
作為網(wǎng)絡(luò)信息獲取的最終步驟,對檢索程序獲得的網(wǎng)頁信息進行抽取和預(yù)處理是搜索信息全面的重要影響因素。所謂網(wǎng)頁信息抽取及預(yù)處理技術(shù)是將網(wǎng)絡(luò)信息中包含的自然語言根據(jù)檢索條件進行提取,從中獲得需要的實體、關(guān)系、事件等要素,最終并用易于理解接受的規(guī)范化形式對結(jié)果進行記錄和展示。現(xiàn)階段一個成熟的互聯(lián)網(wǎng)網(wǎng)站,其頁面通常包括導(dǎo)航欄、正文標題、正文內(nèi)容、相關(guān)鏈接、推廣信息、版權(quán)公告等。而在這些內(nèi)容中,真正吸引用戶的是正文標題和正文內(nèi)容,也就是切合用戶需求的主體信息。在獲取網(wǎng)絡(luò)信息的過程中盡量獲得這些主體內(nèi)容,對其他次要信息進行選擇性忽略正是網(wǎng)頁信息抽取及預(yù)處理技術(shù)重要的功能。
2 輿情監(jiān)測網(wǎng)絡(luò)爬蟲技術(shù)簡介
作為當前重要的互聯(lián)網(wǎng)信息采集技術(shù),網(wǎng)絡(luò)爬蟲(We-bCrawler)技術(shù)在實際應(yīng)用中收到了較好的效果。當前各領(lǐng)域構(gòu)件的輿情采集系統(tǒng)中廣泛采用的是Heritrix網(wǎng)絡(luò)爬蟲,這一開源程序允許用戶的自主修改移植。Heritrix主要有三大部件:范圍部件、邊界部件、處理器鏈。其中,范圍部件控制抓取的URL入隊過程;邊界部件則對選定的URL的收集情況進行監(jiān)測,進而選擇下一個URL,排除已處理URL;處理器鏈則可視為URL處理器,其工作結(jié)果會反饋給邊界部件。
網(wǎng)絡(luò)爬蟲的工作流程是從未訪問URL隊列中選取目標并開始爬行,通過URL的指向作用,引導(dǎo)程序識別目標網(wǎng)頁,通過事先認可的網(wǎng)絡(luò)協(xié)議將網(wǎng)頁內(nèi)容爬取抽取出來,然后解析內(nèi)容其中包括目標網(wǎng)頁內(nèi)的新URL,并將這部分URL添加進未訪問列表,完成爬取后獲取的內(nèi)容存放到本地網(wǎng)頁庫內(nèi)。
3 提高網(wǎng)絡(luò)爬蟲在輿情監(jiān)測應(yīng)用水平的措施
網(wǎng)絡(luò)爬蟲的本質(zhì)是能夠使實現(xiàn)網(wǎng)絡(luò)信息自動提取代碼程序,是網(wǎng)絡(luò)搜索引擎功能的主要實現(xiàn)手段。網(wǎng)絡(luò)爬蟲包括通用爬蟲和面向主題爬蟲兩種,當前網(wǎng)絡(luò)輿情監(jiān)測使用的面向主題網(wǎng)絡(luò)爬蟲程序,會通過網(wǎng)頁分析算法對非設(shè)定主題鏈接進行排除過濾,提高了搜索的精確性。當前,網(wǎng)絡(luò)輿情監(jiān)測中的面向主題爬蟲技術(shù)的主要研究對象的行業(yè)領(lǐng)域的URL搜索策略問題。
3.1 改善爬蟲網(wǎng)絡(luò)利用率的解決方案
網(wǎng)絡(luò)爬蟲的利用率是當下輿情監(jiān)測工作的重要限制因素,高效的爬蟲利用能夠更為便捷地獲得全面而準確的信息。
為了準確掌握爬蟲工作的效率,我們在爬蟲中加入測速的方法,對爬蟲抓取速度進行監(jiān)測和工作特征數(shù)據(jù)進行分析。根據(jù)監(jiān)測結(jié)果,在抓取速度較慢的階段,采取相應(yīng)措施進行修正,保證程序?qū)W(wǎng)路資源的高效利用。這一解決方案的具體實現(xiàn)步驟如下:
(1)爬蟲抓取速度監(jiān)控。抓取速度是進行衡量信息獲取水平的重要衡量因素,影響爬蟲的網(wǎng)頁抓取速度主要有兩個因素,分別是抓取頁面的大小和抓取這些頁面所耗費的時間。因而,可以根據(jù)基本的換算關(guān)系定義網(wǎng)絡(luò)爬蟲抓取速度B:B=PT,式中:T為爬蟲進行抓取的時間間隔;P代表該時間間隔內(nèi)抓取頁面的大小。
(2)爬行策略更改。40%正常水平的抓取速度是十分低效的,這時必須采取相應(yīng)的措施進行解決。常見的措施主要包括:減少爬蟲的線程數(shù);暫停當前爬蟲的運行,選擇適當?shù)臅r間繼續(xù)爬行;更換爬行網(wǎng)站。
3.2 改善爬蟲主題覆蓋率的解決方案
當前的社會熱點層出不窮,具有一定的突然性,同時在人們的討論和交流中會進一步發(fā)酵,產(chǎn)生的信息量很大。為了保證網(wǎng)絡(luò)輿情監(jiān)測工作的順利進行,就要求爬蟲程序具有較高的抓取的覆蓋率。另外,在進行網(wǎng)頁內(nèi)容的抓取過程中,爬蟲程序需要執(zhí)行網(wǎng)頁與主題相關(guān)度的計算,會影響爬行速度。所以在進行網(wǎng)絡(luò)爬蟲抓取優(yōu)化時,通常會使用在傳統(tǒng)爬蟲中加入主題更改模塊的形式,即保證了抓取速度的同時也提高了主題覆蓋率。
3.3 系統(tǒng)設(shè)計與測試
通過以上分析可知,提高爬蟲系統(tǒng)工作效率的關(guān)鍵是在其內(nèi)部添加測速模塊和主體更改模塊,由此可完成設(shè)計方案的優(yōu)化。該爬蟲在傳統(tǒng)爬蟲的基礎(chǔ)上添加了爬蟲測速模塊和主題更改模塊。
4 結(jié)束語
網(wǎng)絡(luò)爬蟲技術(shù)是當前輿情監(jiān)測系統(tǒng)中使用的重要技術(shù),在網(wǎng)頁內(nèi)容獲取方面發(fā)揮了重要作用。限制這一技術(shù)進一步發(fā)揮作用的主要原因是爬蟲程序的網(wǎng)絡(luò)資源利用率的問題。同時,網(wǎng)絡(luò)輿情監(jiān)測檢索突發(fā)性和大數(shù)據(jù)性特征,要求爬蟲抓取信息的過程更為迅速,主體覆蓋面也要更廣。本文通過在傳統(tǒng)爬蟲中加入了爬蟲測速監(jiān)控模塊和主題更改模塊的形式,進行了抓取速度和覆蓋率的監(jiān)測實驗,其結(jié)果表明,這一優(yōu)化方案有效提高了爬蟲程序的執(zhí)行效率和信息獲得的全面性,是一種值得認可的檢索技術(shù)。
參考文獻:
[1]王桂梅.主題網(wǎng)絡(luò)爬蟲關(guān)鍵技術(shù)研究[D].哈爾濱工業(yè)大學(xué),2009.
關(guān)鍵詞:網(wǎng)絡(luò)爬蟲,策略,搜索引擎
網(wǎng)絡(luò)快速發(fā)展的今天,互聯(lián)網(wǎng)承載著海量的信息,能夠準確快速的提取我們所需要的信息是現(xiàn)在的挑戰(zhàn)。傳統(tǒng)的搜索引擎有Yahoo,Google,百度等,這些檢索信息的工具是人們每天訪問互聯(lián)網(wǎng)的必經(jīng)之路。但是,這些傳統(tǒng)性搜索引擎存在著局限性,它不能全面的準確的找到所需要的信息,也會使一些和需求無關(guān)的內(nèi)容一起搜索到。嚴重的降低了使用這些信息的效率,所以說提高檢索信息的速度和質(zhì)量是一個專業(yè)搜索引擎主要的研究內(nèi)容。
1.搜索引擎的研究
1.1搜索引擎的分類
搜索引擎按其工作方式可分為三種,分別是全文搜索引擎,目錄索引類搜索引擎[1]和元搜索引擎。
1. 全文搜索引擎
全文搜索引擎是最常用搜索引擎,大家最熟悉的就是國外的代表Google,和國內(nèi)的代表百度。它們通常都是提取各個網(wǎng)站的網(wǎng)頁文字存放在建立的數(shù)據(jù)庫中,檢索與用戶查詢條件匹配的相關(guān)記錄,然后按其自己設(shè)定的排列順序?qū)⒔Y(jié)果返回給用戶。
從搜索結(jié)果來源的角度,全文搜索引擎又可細分為兩種,一種是擁有自己的檢索程序,它們擁有自己的網(wǎng)頁數(shù)據(jù)庫,搜索到得內(nèi)容直接從自身的數(shù)據(jù)庫中調(diào)用,如Google和百度;另一種則是租用其他引擎的數(shù)據(jù)庫,但是,是按自定的格式排列搜索結(jié)果,如Lycos引擎。
2.目錄索引型搜索引擎
目錄索引,就是將網(wǎng)站分類,然后存放在相應(yīng)的目錄里,用戶在查詢所需要的內(nèi)容時有兩種選擇一種是關(guān)鍵詞搜索,另一種是按分類目錄一層一層的查找。據(jù)信息關(guān)聯(lián)程度排列,只不過其中人為因素要多一些。如果按分層目錄查找,某一目錄中網(wǎng)站的排名則是由標題字母的先后以關(guān)鍵詞搜索,返回的結(jié)果跟搜索引擎一樣,也是按自定順序決定。
目錄索引只能說有搜索功能,但僅僅是按目錄分類的網(wǎng)站鏈接列表。用戶完全可以不用進行關(guān)鍵詞查詢,僅靠分類目錄也可找到需要的信息。目錄索引型搜索引擎中最具代表性的是Yahoo(雅虎)。其他著名的還有Look Smart、About等。國內(nèi)的搜狐、新浪、網(wǎng)易搜索也都屬于這一類。
3.元搜索引擎
當用戶在進行查詢時,元搜索引擎可以同時在其他多個引擎上進行搜索,將檢索結(jié)果進行統(tǒng)一處理,并將結(jié)果以統(tǒng)一的格式返回給用戶。正因為如此,這類搜索引擎的優(yōu)點是返回結(jié)果的信息量更全面,但是缺點就是無用的信息太多不能準確的找到用戶需要的結(jié)果。
具有代表性的元搜索引擎有Dogpile、InfoSpace、Vivisimo等,中文元搜索引擎中著名的有搜星搜索引擎。
在搜索結(jié)果排列方面,不同的元搜索引擎有不同的結(jié)果排列的方式。如Dogpile,就直接按來源引擎排列搜索結(jié)果,如Vivisimo,是按自定的規(guī)則將結(jié)果重新進行排列。。
1.2搜索引擎的工作原理
搜索引擎主要是對用戶要求的信息進行自動信息搜集,這個功能共分為兩種:一種是定期搜索,即每隔一段時間搜索引擎主動派出“Spider”程序,目的是對一定IP地址范圍內(nèi)的互聯(lián)網(wǎng)站進行檢索,如果一旦發(fā)現(xiàn)新的網(wǎng)站,它會自動提取網(wǎng)站的信息和網(wǎng)址加入自己的數(shù)據(jù)庫;另一種是提交網(wǎng)站搜索,即網(wǎng)站擁有者主動向搜索引擎提交網(wǎng)址,搜索引擎在一定時間內(nèi)定向向你的網(wǎng)站派出蜘蛛程序,掃描你的網(wǎng)站并將有關(guān)信息存入數(shù)據(jù)庫,以備用戶查詢。
如果用戶以關(guān)鍵詞查詢所需要的信息時,搜索引擎會在數(shù)據(jù)庫中進行搜尋,如果找到與用戶要求內(nèi)容相匹配的網(wǎng)站時,搜索引擎通常根據(jù)網(wǎng)頁中關(guān)鍵詞的匹配程度,出現(xiàn)的位置/頻次,鏈接質(zhì)量等特殊的算法計算出各網(wǎng)頁的相關(guān)度及排名等級,然后根據(jù)關(guān)聯(lián)度高低,按順序?qū)⒂脩羲枰膬?nèi)容反饋給用戶。
2.網(wǎng)絡(luò)爬蟲
2.1通用網(wǎng)絡(luò)爬蟲和聚焦網(wǎng)絡(luò)爬蟲的工作原理
網(wǎng)絡(luò)爬蟲是搜索引擎的重要組成部分,它是一個自動提取網(wǎng)頁的程序,為搜索引擎從網(wǎng)上下載網(wǎng)頁。
傳統(tǒng)爬蟲從一個或若干初始網(wǎng)頁的URL開始,獲得初始網(wǎng)頁上的URL,在抓取網(wǎng)頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統(tǒng)的一定停止條件。。
與傳統(tǒng)爬蟲相比,聚焦爬蟲的工作流程則較為復(fù)雜,需要根據(jù)一定的網(wǎng)頁分析算法過濾與主題無關(guān)的鏈接,保留有用的鏈接并將其放入等待抓取的URL隊列。然后,它將根據(jù)一定的搜索策略從隊列中選擇下一步要抓取的網(wǎng)頁URL,并重復(fù)上述過程,直到達到系統(tǒng)的某一條件時停止。另外,所有被爬蟲抓取的網(wǎng)頁將會被系統(tǒng)存起來,進行一定的分析、過濾,并建立索引,為了方便之后的查詢和檢索。
2.2網(wǎng)絡(luò)爬蟲的搜索策略
1.IP 地址搜索策略
IP地址搜索策略是先給爬蟲一個起始的IP地址,然后根據(jù)IP地址以遞增的方式搜索本IP地址段后的每一個地址中的文檔,它完全不考慮各文檔中指向其它Web 站點的超級鏈接地址。這種搜索策略的優(yōu)點是搜索比較全面,因此能夠發(fā)現(xiàn)那些沒被其它文檔引用的新文檔的信息源;但是缺點是不適合大規(guī)模搜索。
2. 深度優(yōu)先搜索策略
深度優(yōu)先搜索是一種在開發(fā)爬蟲早期使用較多的方法。它的目的是要達到被搜索結(jié)構(gòu)的葉結(jié)點(即那些不包含任何超鏈的HTML文件) 。例如,在一個HTML文件中,當一個超鏈被選擇后,被鏈接的HTML文件將執(zhí)行深度優(yōu)先搜索,也就是說在搜索其余的超鏈結(jié)果之前必須先完整地搜索單獨的一條鏈。深度優(yōu)先搜索沿著HTML文件上的超鏈走到不能再深入為止,然后返回到某一個HTML文件,再繼續(xù)選擇該HTML文件中的其他超鏈。當不再有其他超鏈可選擇時,說明搜索已經(jīng)結(jié)束。
3. 寬度優(yōu)先搜索策略
寬度優(yōu)先搜索的過程是先搜索完一個Web 頁面中所有的超級鏈接,然后再繼續(xù)搜索下一層, 直到底層為止。例如,一個HTML 文件中有三個超鏈,選擇其中之一并處理相應(yīng)的HTML文件,然后不再選擇第二個HTML文件中的任何超鏈, 而是返回并選擇第二個超鏈,處理相應(yīng)的HTML文件,再返回,選擇第三個超鏈并處理相應(yīng)的HTML文件。當一層上的所有超鏈都己被選擇過,就可以開始在剛才處理過的HIML 文件中搜索其余的超鏈。
寬度優(yōu)先搜索策略的優(yōu)點:一個是保證了對淺層的優(yōu)先處理,當遇到一個無窮盡的深層分支時,不會導(dǎo)致陷進WWW 中的深層文檔中出現(xiàn)出不來的情況發(fā)生;另一個是它能在兩個HTML文件之間找到最短路徑。
寬度優(yōu)先搜索策略通常是實現(xiàn)爬蟲的最佳策略,因為它容易實現(xiàn),而且具備大多數(shù)期望的功能。。但是如果要遍歷一個指定的站點或者深層嵌套的HTML文件集,用寬度優(yōu)先搜索策略則需要花費比較長的時間才能到達深層的HTML文件。
2.3網(wǎng)絡(luò)爬蟲的發(fā)展趨勢
隨著AJAX/Web2.0的流行,如何抓取AJAX等動態(tài)頁面成了搜索引擎急需解決的問題,如果搜索引擎依舊采用“爬”的機制,是無法抓取到AJAX頁面的有效數(shù)據(jù)的。對于AJAX這樣的技術(shù),所需要的爬蟲引擎必須是基于驅(qū)動的。而如果想要實現(xiàn)事件驅(qū)動,首先需要解決以下問題:第一,JavaScript的交互分析和解釋;第二,DOM事件的處理和解釋分發(fā);第三,動態(tài)DOM內(nèi)容語義的抽取。
3.結(jié)束語
本文闡述了搜索引擎的原理以及網(wǎng)絡(luò)爬蟲的工作原理和發(fā)展趨勢,網(wǎng)絡(luò)爬蟲技術(shù)的研究對搜索引擎的應(yīng)用和發(fā)展有著十分重要的意義。抓住準度和速度兩個大方向,進一步的深入網(wǎng)絡(luò)爬蟲技術(shù),在耗費最少的網(wǎng)絡(luò)資源的前提下使搜索引擎能夠更準確更快捷的找到人們的需求。
參考文獻
[1] Edwards, J.,McCurley, K. S., and Tomlin, J. A. (2001). 'An adaptive model foroptimizing performance of an incremental web crawler'. In Proceedings ofthe Tenth Conference on World Wide Web (Hong Kong: Elsevier Science): 106–113.doi:10.1145/371920.371960.
[2]劉金紅,陸余良,主題網(wǎng)絡(luò)爬蟲研究綜述,計算機應(yīng)用研究院,2007(10):26-27.
[3]王巖,搜索引擎中網(wǎng)絡(luò)爬蟲技術(shù)的發(fā)展,電信快報,2008(10):19-20.
[4]劉世濤,簡析搜索引擎中網(wǎng)絡(luò)爬蟲的搜索策略,阜陽師范學(xué)院學(xué)報,2006(9):60-61.
【關(guān)鍵詞】網(wǎng)絡(luò)爬蟲;WEB挖掘;股票預(yù)警
1.引言
在證行業(yè)內(nèi),客戶是證券公司的最重要的資產(chǎn),直接關(guān)系到公司核心業(yè)績的好壞。市場競爭的日益激烈,使得證券公司對客戶的爭奪加劇。一些證券公司采取以低于成本的證券交易傭金水平、“零傭金”等方式招攬客戶,但是仍然收效甚微。其根本原因在于忽視客戶的實際利益需求。證公司要更加注意練內(nèi)功,增加服務(wù)的“含金量”,利用信息化時代的技術(shù)條件,適時建立一種個性化服務(wù),才能夠贏得客戶的信賴,實現(xiàn)證公司和股民的共贏。
目前每一家證券公司都開通了自己的門戶網(wǎng)站,實時股評、盤后解讀、各種深度分析、個股資料、研究報告、消息等紛繁復(fù)雜。每個投資者每天都要面對成千上萬條的真假資訊,查詢時耗時費力。因此使他們便捷地獲取真正關(guān)心的信息就顯得尤為重要。一個好的證券公司,并不是要將所有能獲取的信息全部展現(xiàn)給客戶,而是要求首先建立結(jié)構(gòu)化的信息采集和管理系統(tǒng),然后根據(jù)客戶的需要提供它們所要求的內(nèi)容。而這就是本文要探討的股票信息預(yù)警系統(tǒng)。
2.基于網(wǎng)絡(luò)爬蟲的股票預(yù)警系統(tǒng)分析
面對大量的實時證信息,只有使用自動化的手段來有的放矢的獲取,才能滿足用戶的要求。我們結(jié)合搜索引擎所使用的網(wǎng)絡(luò)爬蟲技術(shù),來實現(xiàn)股票信息預(yù)警系統(tǒng)。網(wǎng)絡(luò)爬蟲是一種按照一定的規(guī)則自動提取互聯(lián)網(wǎng)信息的程序,它是搜索引擎的重要組成部分,把分散在互聯(lián)網(wǎng)上的離散的信息收集起來,以便人們方便快捷的搜索到有用的信息。從而明顯地降低了人們獲取信息的難度。
本文使用由HtmlParser和 HttpClient兩個開源工具構(gòu)建的一個簡易網(wǎng)絡(luò)爬蟲來實現(xiàn)股票信息預(yù)警。HttpClient提供了便利的 HTTP 協(xié)議訪問,使得我們可以很容易的得到某個網(wǎng)頁的源碼并保存在本地。HtmlParser對HTML代碼進行處理,將抓取下來的網(wǎng)頁信息進行再加工,分析,抽取有用的信息,并通過短信平臺將分析加工后的數(shù)據(jù)發(fā)送給用戶。
使用上述方法完成股票信息預(yù)警系統(tǒng)的設(shè)計,實現(xiàn)股票價格到價提醒和股票公告信息的推送的功能。
3.股票信息預(yù)警系統(tǒng)設(shè)計
3.1 工作原理
預(yù)警系統(tǒng)由系統(tǒng)短信接收模塊借助短信平臺的WEB.SERVICE接口獲取用戶設(shè)置的股票預(yù)警和公告推送代碼信息,將這些信息送入股票預(yù)警系統(tǒng)里進行處理,并寫入數(shù)據(jù)庫。然后利用網(wǎng)絡(luò)爬蟲對指定數(shù)據(jù)源進行實時抓取,獲取到的網(wǎng)頁股票數(shù)據(jù)返回給系統(tǒng)進行預(yù)警處理,抓取到的公告信息由網(wǎng)絡(luò)爬蟲提取處理后返回給系統(tǒng)分析,通過短信發(fā)送模塊回復(fù)給用戶,同時回寫數(shù)據(jù)庫。
根據(jù)客戶實時提交的預(yù)警股票代碼,拼接鏈接地址,放進待抓取隊列,并根據(jù)股票代碼建立一張動態(tài)更新股價的哈希表,然后股票工作線程按一定的時間間隔從待爬行隊列中取出鏈接發(fā)送http請求獲取源數(shù)據(jù),分析數(shù)據(jù),把提取出來的價格放入哈希表中。此時程序不停的比較動態(tài)更新股價的哈希表與用戶設(shè)定的預(yù)警價格表,如果符合預(yù)警條件,則退出進入下一個環(huán)節(jié)短信發(fā)送,如果不符合條件,則繼續(xù)比對,直到滿足系統(tǒng)停止條件為止。
3.2 基本工作流程
4.股票信息預(yù)警系統(tǒng)的實現(xiàn)
本文采用模塊式的實現(xiàn)方法,將預(yù)警系統(tǒng)分為若干部分,限于篇幅,這里主要介紹股票預(yù)警、股票信息獲取、短信收發(fā)這幾個模塊。
4.1 股票預(yù)警設(shè)計思路
實現(xiàn)股票價格的預(yù)警,需要兩個要素,其一是用戶設(shè)定的預(yù)警價格,其二是不斷變化中的實時價格。有了這兩個價格就可以通過比較直到滿足條件(突破上下限價格)完成預(yù)警。這些價格信息存儲在數(shù)據(jù)列中,所以實現(xiàn)時選擇使用Hashtable存儲動態(tài)更新的實時股票價格表stockprice,List存儲用戶設(shè)定的預(yù)警價格表CurrentAletStocks。
首先將預(yù)警股票代碼寫入stockprice和CurrentAletStocks中,stockprice獲取股票實時價格,將此價格與CurrentAletStocks正在預(yù)警的股票的上下限進行比較,如果在上下限之間,那么只更新stockprice中的當前價格;如果突破了上限或者下限價格,更新當前價格,并將突破當前價格內(nèi)容信息送入短信收發(fā)模塊發(fā)送給預(yù)警的用戶。
4.2 股票信息獲取
實時股票信息的來源主要通過調(diào)用股票公用數(shù)據(jù)接口來實現(xiàn),本系統(tǒng)中使用了新浪股票公用數(shù)據(jù)源。從數(shù)據(jù)源獲取到的實時股票信息,我們還需要對它進行解碼。系統(tǒng)解碼后的字符串信息有很多,如(股票名稱、行情時間、最新價、昨收盤、今開盤、漲跌額、最低、最高、漲跌幅、成交量、成交額、競買價、競賣價、委比、買一-買五、賣一-賣五),而我們需要的只是現(xiàn)價和股票名稱,所以還要通過自定義的方法Parse對字符串進行格式匹配處理從而得到我們想要的數(shù)據(jù)。
我們以新浪股票公用數(shù)據(jù)源獲取股票信息為例:
⑴構(gòu)建股票代碼信息
例如:600250 Sh600250 如果是60開頭為滬市、如果是30或者00開頭為深市
⑵拼接爬取URL地址
例如:URL:http:////list=sh600250
⑶通過HttpClient發(fā)送get請求,并對獲取的信息進行解碼
⑷對解碼后的字符串進行格式匹配處理(即方法Parse)
⑸返回所需要的正確格式
4.3 SMS短信收發(fā)模塊
與用戶的交互需要短信的收發(fā),系統(tǒng)高峰時需要幾十甚至幾百條的同時收發(fā)。因此選擇了目前SP(服務(wù)提供商)普遍使用的短信平臺(短信網(wǎng)關(guān))。
短信平臺是基于中國移動、中國聯(lián)通、中國電信提供的短信端口與互聯(lián)網(wǎng)連接的基礎(chǔ)上,實現(xiàn)與用戶指定號碼進行短信批量發(fā)送和自定義發(fā)送功能的綜合平臺。它分為軟件單機版(帶客戶端)CS 結(jié)構(gòu)和網(wǎng)絡(luò)共享版BS 結(jié)構(gòu)。本系統(tǒng)采用了網(wǎng)絡(luò)BS結(jié)構(gòu)的短信平臺,借助webservice接口實現(xiàn)與程序的對接。
4.3.1 發(fā)送短信
訪問web地址http:///smssendwebservice/
Service.asmx。調(diào)用.net中Web Services協(xié)議棧里的soap協(xié)議使用Smssend 方法:
用戶名:<UsrId>string</UsrId>
密碼:<UserKey>string</UserKey>
目標手機號碼:<PhoneNumber>string</PhoneNumber>
短信內(nèi)容:<SmsContent>string</SmsContent>
4.3.2 接收短信
調(diào)用QuerymoSms方法查詢用戶上行短信,訪問地址:http:///httpinterface/QueryMoSms.asp?UserId=&userkey=
UserId為短信平臺提供給你的賬號
userkey為短信平臺提供給你的賬號密碼
5.結(jié)束語
本文使用HtmlParser和 HttpClient構(gòu)建的一個簡易網(wǎng)絡(luò)爬蟲,通過詳細的系統(tǒng)設(shè)計分析,完成股票信息獲取、股票價格預(yù)警、公告提醒、短信平臺收發(fā)等模塊的開發(fā),實現(xiàn)股票信息預(yù)警系統(tǒng)從而更好服務(wù)用戶。
參考文獻
[1]張亮.基于HTMLParser和HttpClient的網(wǎng)絡(luò)爬蟲原理與實現(xiàn)[J].電腦編程技巧與維護,2011,20:94-103.
關(guān)鍵詞:網(wǎng)絡(luò),主題爬蟲,搜索引擎,軍事教育主題爬蟲
l1引言
當今,隨著Intemet在國內(nèi)的迅猛發(fā)展,軍隊正在向現(xiàn)代化建軍目標發(fā)展,為了使軍隊更快的向信息化,數(shù)字化方向發(fā)展,軍隊都在著手建設(shè)自己的信息網(wǎng),網(wǎng)絡(luò)信息資源也爆炸般的增長,在軍隊內(nèi)的信息服務(wù)器上,同樣能夠獲取許多有用的資源。如果沒有一個好的搜索引擎,查詢起來困難就可想而知。現(xiàn)在www網(wǎng)上基本都是一些商業(yè)性的探索引擎,這些引擎深度和廣度都很大,有些甚至是整個環(huán)球網(wǎng)進行檢索。,搜索引擎。而軍隊只需要搜索其內(nèi)部網(wǎng)絡(luò)即可。因此在軍隊網(wǎng)中安置一個針對軍隊信息資源進行搜索的爬蟲十分必要。
l2軍事教育主題爬蟲的爬行策略
搜索引擎中最關(guān)鍵的部分是網(wǎng)絡(luò)爬蟲,它的性能好壞直接影響著搜索引擎的整體性能和處理速度。傳統(tǒng)的網(wǎng)絡(luò)爬蟲是按照預(yù)先設(shè)定的廣度優(yōu)先策略、深度優(yōu)先策略或這兩種策略相結(jié)合的方式爬行網(wǎng)頁[ 1 ] 。網(wǎng)絡(luò)爬蟲的搜索策略與搜索引擎的性質(zhì)和任務(wù)密切相關(guān)。決定網(wǎng)絡(luò)爬蟲搜索策略的關(guān)鍵是如何將不相關(guān)的網(wǎng)頁快速地過濾并刪除掉,因為網(wǎng)頁過濾的速度和準確性將會直接影響網(wǎng)絡(luò)爬蟲的性能。以何種策略訪問Web,成為近年來主題搜索引擎網(wǎng)絡(luò)爬蟲研究的焦點之一。軍事教育主題爬蟲是按照最佳優(yōu)先的爬行策略爬行網(wǎng)頁即軍事教育主題爬行時按照主題相關(guān)度優(yōu)先的爬行策略爬行網(wǎng)頁。爬蟲從網(wǎng)絡(luò)上抓取到的新網(wǎng)頁在爬行之前都要進行主題相關(guān)度分析,與初始種子網(wǎng)頁相關(guān)度最高的網(wǎng)頁被優(yōu)先爬行,而與初始種子網(wǎng)頁不相關(guān)或相關(guān)度不大的網(wǎng)頁則被拋棄。因此與傳統(tǒng)網(wǎng)絡(luò)爬蟲相比,軍事教育主題爬蟲的工作量大大減少、爬行的準確度大大提高。
l3軍事教育主題爬蟲的系統(tǒng)實現(xiàn)
3.1 設(shè)計思路與總體柜架
從設(shè)計思路上,構(gòu)造Spider有兩種比較常用的方法。第一種是把Spider設(shè)計成一個遞歸的程序,第二種是編寫一個非遞歸的Spider程序,程序維護一個要訪問的網(wǎng)頁列表,考慮到Java對數(shù)組、隊列的包支持較為豐富,實現(xiàn)相對容易,本程序使用了第二種設(shè)計思路。
程序中總共維護了四個不同的隊列,它們的總結(jié)如下。每一個這樣的隊列保存著同一處理狀態(tài)的URL。
等待隊列 當Spider程序開始處理URL時,它們被傳送到這一隊列。重要的是同一個URL不能被多次處理,因為這樣是浪費的。當一個URL被處理過后,它被移送到或者是錯誤隊列或者是完成隊列。,搜索引擎。,搜索引擎。
運行隊列 當前正在處理的URL隊列。
錯誤隊列 如果在下載當前網(wǎng)頁時發(fā)生錯誤,它的URL將被加入到錯誤隊列。該URL到達這一隊列后將不再移入其它隊列。,搜索引擎。一旦網(wǎng)頁移入錯誤隊列,Spider程序?qū)⒉粫賹λ鬟M一步處理。
完成隊列 如果在下載網(wǎng)頁時沒有發(fā)生錯誤,該URL將被加入到完成隊列。該URL到達這一隊列后將不再移入其他隊列。
明顯,每個得到的URL都只能存在于一個隊列中。其狀態(tài)流程圖如下(圖1):
評定分數(shù)計算公式采用信息檢索中常用的詞條權(quán)值計算方法為
TF-IDF 函數(shù)
Wi,j=Avg(TFi)*(1/(log(nDoc/ni)+1/log(nDoc-1)))
Avg(TFi):對詞i取其在各文檔中的TF值進行平均;
nDoc:文檔數(shù)目;
ni:出現(xiàn)詞i的文檔個數(shù);
3.2程序結(jié)構(gòu)及具體實現(xiàn)
網(wǎng)絡(luò)爬蟲種類很多,如有基于全文搜索的網(wǎng)絡(luò)爬蟲[2],聚類網(wǎng)絡(luò)爬蟲,主題網(wǎng)絡(luò)爬蟲,基于本體的網(wǎng)絡(luò)爬蟲等。在引入BOT包的基礎(chǔ)上,實現(xiàn)了以并發(fā)進程方式對指定站點內(nèi)部網(wǎng)頁數(shù)據(jù)的訪問和基于隊列的處理,將抓取到的網(wǎng)頁數(shù)據(jù)存儲在本地數(shù)據(jù)庫中。程序由四個文件組成:CheckLinks.java; HTMLParse.java; ISpiderReportable.java;Spider.java,程序工程報告如圖2:
圖2
用TF-IDF 函數(shù)算出各個詞語的權(quán)值,最終得到全部詞的權(quán)值wordWeightOfAllDocument
public class segmenter {
public TreeMap zhwords;//用Treemap形式定義,帶標簽,方便對應(yīng)查找
//下面定義的是一些統(tǒng)計詞項與詞頻的鏈表
public ArrayList wordSum;
public ArrayList wordCount;
public ArrayList wordAll;
public ArrayList wordCountAll;
//根據(jù)選取網(wǎng)頁的編碼類型,選擇不同的詞庫文件。
String newword = null;
try {
InputStream worddata = null;
if(charform == SIMP) {
worddata= getClass().getResourceAsStream('simplexu8.txt');
} else if(charform == TRAD) {
worddata= getClass().getResourceAsStream('tradlexu8.txt');
} else if(charform == BOTH) {
worddata= getClass().getResourceAsStream('bothlexu8.txt');
}
//wordSum ; wordCount; wordAll; wordCountAll;wordCountMax;這些鏈表都是為了分詞后統(tǒng)計出每個詞的tf值和IDF值,最后根據(jù)公式算出每個詞語的權(quán)值!
//這個是tf值的計算并記錄文件
public ArrayList getTfValue(String args){
int tmpIndex;
BufferedWriter fileOut;
ArrayList tmpArrayList = newArrayList(3);
File tmpTfFilePath=newFile('tf');
tmpTfFilePath.mkdir();
try{
fileOut=newBufferedWriter ( new FileWriter (args+'.tf'));
for(int k =0;k<wordSum.size();k++){
tmpIndex=k;
double tmp =(double)(Integer)wordCount.get(tmpIndex)).intValue()/(double) wordCountMax;
Double dTmp = newDouble(tmp); tmpArrayList.add(dTmp/*(Object)tmp*/);
//這個是IDF值的計算
for(int idfi=0;idfi<wordOfAllDocument.size();idfi++)
{
int ni=0;//how many document contains a word
String tmpString=(String)wordOfAllDocument.get(idfi);
for(int idfj=0; idfj<nDoc; idfj++)
{
if(((ArrayList)wordOfOneDocument.get(idfj)).contains(tmpString))
ni++;
}
Double dTmpdouble = newDouble(1/(Math.log(nDoc/ni)+1/Math.log(nDoc-1)));
wordIdfValueOfAllDocument.add(/*1/(Math.log(nDoc/ni)+1/Math.log(nDoc-1))*/dTmpdouble);
//IDF 采用倒數(shù),表明在專題訓(xùn)練文檔中在越多文檔中出現(xiàn),其越重要。
//最后利用公式算出該詞在訓(xùn)練主題中的權(quán)重 W=Avg(tf)*IDF
for(int tfi=0;tfi<wordOfAllDocument.size();tfi++){
inttmpIndex=-1;
inttni=0;
doubletfall=0.0;
StringtmpString=(String)wordOfAllDocument.get(tfi);
for(inttfj=0; tfj<nDoc; tfj++){
if((tmpIndex=((ArrayList)wordOfOneDocument.get(tfj)).indexOf(tmpString))!=-1){
tni++; tfall=tfall+((Double)(((ArrayList)wordTfValueOfOneDocument.get(tfj)).get(tmpIndex))).doubleValue();
}
}
Double dTmpdouble = newDouble(tfall/tni);
Double dTmpdoubleElse = newDouble((tfall/tni)*(((Double)wordIdfValueOfAlDocument
-.get(tfi)).doubleValue()));
wordTfValueOfAllDocument.add(dTmpdouble); wordWeightOfAllDocument.add(dTmpdoubleElse);
}
實現(xiàn)的流程如下,首先,CheckLinks得到一個起始的URL,在CheckLinks.run()中,新建Spider實例,把起始URL加入到等待隊列中,并通過setKeyWord()方法設(shè)置關(guān)鍵詞,setCheckRobots()、setCheckMetaTag()配置選項,程序進入正常工作。
Spider通過getWorkloadWaiting()方法得到等待隊列中的URL,調(diào)用processURL()方法對取出的URL進行處理,對此,processURL()方法內(nèi)以URL為地址建立鏈接,取回對象通過parse.parse()方法對HTML進行解釋,主要是從得到的HTML中獲取新的URL并添加到等待隊列中,及對主題字的匹配。經(jīng)過parse返回,則從等待隊列中移走處理的URL,如果沒有錯誤,把它添加到完成隊列中,否則添加到錯誤隊列中,程序又去等待隊列中取出URL,進行同樣的處理流程,循環(huán)一直到等待隊列為空。
3.3開發(fā)環(huán)境
實驗條件:搜索深度= 2 (設(shè)的較小,為了防止搜索規(guī)模過大) ,線程數(shù)= 100 (要求在網(wǎng)絡(luò)環(huán)境較好的情況下) ,起始種子= 10 (都是經(jīng)過人工選擇的較好的種子) ,閾值r = 0. 6 ,中文分詞主要以中科院計算所免費版的分詞工具(C 語言開發(fā)) 為基礎(chǔ)。機器配置: Intel(R)Core™2 CPU T5500 @1.66Ghz,內(nèi)存2048 MB。試驗結(jié)果表明軍事教育主題爬蟲抓取網(wǎng)頁的準確度及準確率都比普通爬蟲的高。,搜索引擎。
3.4 實驗總結(jié)及系統(tǒng)存在的問題
爬行速度太慢,特別是對超鏈接較多的頁面;頁面內(nèi)容的多少對評分有一定影響,雖然不大,但仍需考慮;若能在網(wǎng)頁架構(gòu)分析上添加一定的過濾,抓取核心內(nèi)容,相信對抓取質(zhì)量會有更大的提高,這方面也待改善。
l4結(jié)束語
本文通過設(shè)計一個軍事教育主題爬蟲從網(wǎng)絡(luò)上收集有關(guān)理財網(wǎng)頁(代替軍隊的教育網(wǎng)頁),以解決本實驗室面向軍事教育主題的個性化搜索引擎的資源問題。,搜索引擎。從實驗結(jié)果來看爬蟲達到了我們初步的預(yù)定目標,下一步我們將不斷對其進行完善以進一步提高其搜索精度及搜索速度。
參考文獻
[1]周立柱,林玲1聚焦爬蟲技術(shù)研究綜述1計算機應(yīng)用1第25卷第9期2005年9月:1966
[2]徐遠超,劉江華,劉麗珍等.基于Web 的網(wǎng)絡(luò)爬蟲的設(shè)計與實現(xiàn).微計算機信息.2007,23(7):119-121
[2[Programming a Spider in Java,Jeff Heaton
Biography:JinPeng(1982-),male, qingdao,China University Of Petroleum, research interests are in areas of computernetwork and. Search Engine
【關(guān)鍵詞】網(wǎng)絡(luò)爬蟲;社交網(wǎng)絡(luò);web信息抽取;AJAX
1.引言
隨著信息技術(shù)的發(fā)展,各種新聞、論壇和博客網(wǎng)站為人們提供了發(fā)表評論的平臺,對相關(guān)部門掌握輿情的走向起著重要作用,使得輿情研究變得有價值。由于Ajax技術(shù)的廣泛使用,用于信息搜索的常規(guī)網(wǎng)絡(luò)爬蟲技術(shù)面臨嚴重挑戰(zhàn),出現(xiàn)了針對Ajax技術(shù)的爬蟲。2007年,瑞士蘇黎世聯(lián)邦理工學(xué)院的Gianni Frey[1,2]通過解析網(wǎng)頁中的腳本,實現(xiàn)了Ajax動態(tài)信息的采集;隨后Cristian[3]等人提出了基于腳本函數(shù)以及參數(shù)的熱點檢測機制,減少了重復(fù)信息的采集;2008年,荷蘭理工大學(xué)的Ali[4]等人利用瀏覽器接口模擬用戶對頁面元素操作獲取動態(tài)信息。在我國,2007年浙江大學(xué)的羅兵[5]在普通爬蟲的基礎(chǔ)上增加了JS(JavaScript)解析和DOM(Document Object Model)操作模塊,實現(xiàn)了對JavaScript代碼的解析和JavaScript代碼中相關(guān)DOM操作的支持,完成了對Ajax加載內(nèi)容的分析;2009年,中國科學(xué)技術(shù)大學(xué)的曾偉輝[6]采用改進動態(tài)腳本分析方法,實現(xiàn)了基于對象的程序切片算法達到抓取Ajax站點URL的目的;同年,袁小節(jié)[7]以采集新聞主題信息為例,采用基于協(xié)議驅(qū)動采集和事件驅(qū)動采集相結(jié)合的方法完成了聚焦信息的采集。2010年,夏天[8]對Ajax站點數(shù)據(jù)采集進行了總結(jié),分析了采集Ajax網(wǎng)頁動態(tài)信息的研究重點以及發(fā)展趨勢。本文在分析研究了現(xiàn)有爬蟲技術(shù)后,針對微博類網(wǎng)站設(shè)計了支持Ajax技術(shù)的爬蟲,該爬蟲將爬取分為用戶爬取和內(nèi)容爬取兩部分,采用協(xié)議驅(qū)動和事件驅(qū)動結(jié)合的采集策略以及基于模板的抽取方法,實現(xiàn)了對微博內(nèi)容的抽取和保存,提高了信息采集的覆蓋率。
2.面向微博的Web爬蟲設(shè)計與實現(xiàn)
微博在網(wǎng)絡(luò)事件中對輿論的導(dǎo)向起到重要作用[9]。網(wǎng)絡(luò)輿情具有源數(shù)據(jù)針對性、時效性、后續(xù)更新連續(xù)性等特點。本文設(shè)計時,將要爬取的空間限制在微博網(wǎng)站中,考慮微博的時間、內(nèi)容、評論和轉(zhuǎn)發(fā)數(shù)等,以最大限度的信息采集量為目標進行設(shè)計,保證獲取新增評論內(nèi)容。
2.1 面向微博的網(wǎng)絡(luò)爬蟲框架
微博網(wǎng)站的更新是通過用戶在自己的微博上發(fā)表文章來實現(xiàn)。由于沒有包含所有文章的列表,在設(shè)計該類爬蟲時,必須以用戶為單位,先找到用戶,再進入其微博主頁獲取微博的內(nèi)容、時間、評論和轉(zhuǎn)發(fā)數(shù)等。
根據(jù)以上思路,將基于微博的網(wǎng)絡(luò)爬蟲程序分為兩個模塊:獲取用戶信息模塊和獲取微博內(nèi)容模塊,基本框架如圖2-1所示。
圖2-1 基于微博的網(wǎng)絡(luò)爬蟲框架
在獲取用戶信息模塊中,由于信息數(shù)量過大,嚴重影響信息獲取的速度,而實際運用中,大多信息是無用信息。因此,根據(jù)信息的重要程度,將用戶分為普通用戶和重點用戶。在獲取用戶信息時,先從重點用戶出發(fā),盡可能多的獲取用戶列表;更新用戶列表時,以最近一次的用戶列表作為本次爬取的初始化用戶。為保證用戶獲取時分布均勻,在得到用戶列表后,根據(jù)已獲取的URL結(jié)構(gòu),使用隨機函數(shù)產(chǎn)生用戶ID, 構(gòu)造出微博的訪問URL。
在獲取微博內(nèi)容模塊中,采用多線程爬取策略,每個線程負責(zé)一個用戶的URL爬取,直至隊列中的所有URL都被爬取過或者遇到終止條件結(jié)束。當爬蟲進入到用戶微博后,首先判斷該用戶是否已經(jīng)被爬取過,如果己經(jīng)爬取過,則轉(zhuǎn)到該用戶的微博頁面爬取最新的微博;如果尚未被爬取,則從微博主頁開始爬取,依次獲取所有文章信息,并對用戶狀態(tài)進行更新。
2.2 支持Ajax的爬蟲實現(xiàn)
目前廣泛使用的Ajax技術(shù)使用局部刷新和異步讀取的方法,使得服務(wù)器不需要存儲大量靜態(tài)網(wǎng)頁數(shù)據(jù),節(jié)約了存儲空間,提升了用戶的使用體驗[7]。但是,這種技術(shù)也導(dǎo)致了普通爬蟲無法得到完整的網(wǎng)頁信息,如異步請求動態(tài)信息、網(wǎng)頁中的觸發(fā)事件等等。
使用了Ajax技術(shù)的網(wǎng)頁,通常是從數(shù)據(jù)庫中提取相應(yīng)的數(shù)據(jù)填充到指定的模板,并將其顯示在網(wǎng)頁上,如新浪微博的評論信息頁面,評論的內(nèi)容是動態(tài)加載的,當評論內(nèi)容被分成多頁顯示時,不同的評論內(nèi)容頁共用同一個URL。由于這些評論網(wǎng)頁的結(jié)構(gòu)十分相似,且在每一個動態(tài)頁面中都包含多個觸發(fā)元素,若要爬取到完整的評論信息,就需要用戶對這些元素進行操作。
基于Ajax技術(shù)的微博網(wǎng)頁,其首頁的用戶信息、用戶微博的各個鏈接、微博內(nèi)容都能在HTML源文件中查看到。針對這一特點,本研究采用協(xié)議驅(qū)動的方法,采集用戶信息;采用事件驅(qū)動的方法,采集微博評論信息。
2.2.1 數(shù)據(jù)預(yù)處理
預(yù)處理階段的任務(wù)是通過對樣本網(wǎng)頁進行分析,提出采集規(guī)則,提高對評論信息的采集效率。在運行時,使用Ajax狀態(tài)表示一個動態(tài)網(wǎng)頁的信息,采用全探測算法[6]查找頁面中的有效觸發(fā)元素,算法如下:
初始狀態(tài)
構(gòu)建關(guān)于狀態(tài)的DOM Tree
儲存狀態(tài)標識至標識庫,狀態(tài)編號及內(nèi)容至內(nèi)容庫
If 第一次處理 then
遍歷DOM Tree
獲取觸發(fā)事件列表
Else
查詢觸發(fā)事件列表
Endif
If 有未處理事件 then
獲取事件狀態(tài)
添加新狀態(tài)至相應(yīng)庫
Else
結(jié)束
endif
上述算法中,在判斷Ajax狀態(tài)是否有效時,采用樹匹配算法[10],即遞歸比較兩棵樹的第一層子樹,求最大的匹配節(jié)點對。若兩棵樹的根節(jié)點不同,則這兩棵樹的最大匹配為零,不再比較子樹,否則順序比較每個子節(jié)點,最后得到兩棵樹的最大匹配節(jié)點數(shù)。
對于DOM Tree為T的HTML文檔,假設(shè)其每個結(jié)點標記對應(yīng)一個HTML標簽,則任意兩棵樹的相似度可按如下公式計算:
相似度 = 最大匹配節(jié)點數(shù) / 平均節(jié)點數(shù)
兩棵樹的最大匹配節(jié)點樹越大,則兩棵樹越相似。在判斷時,若兩棵樹的DOM結(jié)構(gòu)相似度大于90%,則需要重新遍歷并比較兩棵樹中各個節(jié)點的文本信息,若發(fā)生變化的節(jié)點數(shù)小于節(jié)點總數(shù)的15%,則認為新得到的Ajax狀態(tài)是重復(fù)的,該狀態(tài)無效,否則,新得到的Ajax狀態(tài)是有效的。
2.2.2 信息采集
為了能夠快速地采集主題信息,采用協(xié)議驅(qū)動和事件驅(qū)動相結(jié)合的采集方式,并將采到的信息存入數(shù)據(jù)庫中。
協(xié)議驅(qū)動采集時,根據(jù)HTTP協(xié)議獲取網(wǎng)頁,并對網(wǎng)頁中的信息進行處理,提取網(wǎng)頁中的鏈接。使用WinInet(Windows Internet)庫提供的方法,根據(jù)給定的URL快速獲得網(wǎng)頁的HTML源文件,使用正則表達式提取網(wǎng)頁中的超鏈接。
事件驅(qū)動采集時,根據(jù)預(yù)處理模塊得到的采集規(guī)則,完成該模塊中地址隊列的動態(tài)評論信息采集。
事件驅(qū)動采集流程如圖2-2所示。
圖2-2 事件驅(qū)動采集流程
2.2.3 信息采集數(shù)據(jù)存儲
在將Web信息存入數(shù)據(jù)庫前,必須對微博內(nèi)容、微博評論信息進行格式化處理,以保證所抽取信息的一致性。鑒于模板匹配算法抽取精確、部署快速的特點,本系統(tǒng)采用了模板匹配的方式進行信息處理。操作時,先對所采集到的網(wǎng)頁進行分析,找出最佳匹配模板,使模板的數(shù)據(jù)信息與該模塊所對應(yīng)的數(shù)據(jù)庫字段相對應(yīng),再將數(shù)據(jù)保存至數(shù)據(jù)庫中。配置模板的流程如圖2-3所示。
圖2-3 數(shù)據(jù)存儲流程
3.實驗結(jié)果及分析
3.1 面向微博的網(wǎng)絡(luò)爬蟲框架
本文以/1738289495為例,主要抽取微博內(nèi)容、時間、轉(zhuǎn)發(fā)數(shù)和評論數(shù)和評論內(nèi)容,原文和抽取結(jié)果如圖3-1、3-2所示。
圖3-1 微博原文
從圖中可以看出,通過結(jié)合協(xié)議驅(qū)動采集和事件驅(qū)動采集、模板匹配算法設(shè)計的網(wǎng)絡(luò)爬蟲,成功地抽取到了微博內(nèi)容,同時刪除了引用等其他無關(guān)信息。
圖3-2 抽取結(jié)果
3.2 數(shù)據(jù)比對與分析
微博信息抽取的性能可以定義以下兩個衡量指標:微博主題內(nèi)容的正確提取率(IAR)、微博評論內(nèi)容的正確提取率(IDI)。
(1)
微博內(nèi)容總數(shù)是指某賬戶在某時刻登錄微博首頁所能查看到的所有微博主題內(nèi)容的總數(shù);抽取到的微博主題內(nèi)容總數(shù)是指爬蟲所抓取的正確的微博主題內(nèi)容總數(shù)。
(2)
微博評論總數(shù)是指所有微博主題內(nèi)容的評論數(shù)的總和;抽取的微博評論總數(shù)是爬蟲正確抽取的微博評論總數(shù)。
為了對算法進行性能分析比較,本實驗使用同一賬號在同一時間登錄微博,以保證起始頁面相同。實驗數(shù)據(jù)統(tǒng)計有460條微博和31482條評論信息,分別使用本文爬蟲和BFS(Best First Search)算法爬取的信息量作比較,如表3-1所示。
表3-1 信息爬取量對比表
微博內(nèi)容總數(shù) 正確抓取微博內(nèi)容 IAR(%)
BFS 460 46 10%
本文爬蟲 460 424 92.17%
微博評論總數(shù) 正確抓取
評論數(shù) IDI(%)
BFS 31482 0 0%
本文爬蟲 31482 29543 93.84%
表3-1的數(shù)據(jù)表明,本文設(shè)計的爬蟲能夠采集動態(tài)信息,相對于普通的爬蟲提高了信息采集的覆蓋率。
表3-2 觸發(fā)次數(shù)對比表
評論
頁數(shù) 未制定觸發(fā)約束(觸發(fā)次數(shù)) 有約束條件
(觸發(fā)次數(shù))
微博1 3 23 2
微博2 7 67 6
微博3 11 136 10
微博4 17 167 16
微博5 25 243 24
另外,針對有效觸發(fā)元素的設(shè)計,本文隨機選擇了5篇新浪微博的評論信息進行抓取,以驗證約束條件觸發(fā)的高效性,觸發(fā)次數(shù)對比如表3-2所示。
表3-2的數(shù)據(jù)表明,本文通過對觸發(fā)設(shè)定約束條件,僅針對翻頁信息觸發(fā),減少了無效觸發(fā),提高了采集動態(tài)信息的效率。
4.結(jié)論
Ajax技術(shù)通過異步方式向服務(wù)器發(fā)送并獲取數(shù)據(jù),減少了時間開銷,降低了數(shù)據(jù)流量,受到國內(nèi)外學(xué)術(shù)及商業(yè)領(lǐng)域的關(guān)注。本文通過分析Ajax技術(shù)在微博等評論頁面的應(yīng)用現(xiàn)狀,設(shè)計了針對微博類網(wǎng)站的支持Ajax技術(shù)的爬取策略。
本文的主要貢獻如下:
(1)通過分析協(xié)議驅(qū)動采集和事件驅(qū)動采集的特點以及適用領(lǐng)域,本文提出了根據(jù)微博信息的特點,采用了協(xié)議驅(qū)動采集和事件驅(qū)動采集相結(jié)合的方法,保證了信息獲取的效率和完整性。
(2)在分析現(xiàn)有的Ajax信息采集技術(shù)研究之上,本文提出了對Ajax網(wǎng)頁觸發(fā)元素設(shè)置約束條件,根據(jù)約束條件完成規(guī)約,對網(wǎng)頁中得翻頁元素進行分類處理,為動態(tài)信息的快速采集提供規(guī)則。實驗結(jié)果表明該方法能顯著提高采集效率。
然而,隨著網(wǎng)絡(luò)開發(fā)技術(shù)的發(fā)展,網(wǎng)頁的DOM Tree變得越來越復(fù)雜,利用網(wǎng)頁的DOM Tree進行動態(tài)信息的采集將面臨挑戰(zhàn),設(shè)計更加靈活的動態(tài)信息采集方法成為下一步研究的重點。
參考文獻
[1]Gianni Frey.Indexing AJAX Web Application.30.11.2007.
[2]Cristian Duda, Cianni Frey, Donald Kossmann.AJAX Search : Crawling, Indexing and Searching Web 2.0 Applications.ACM 2008 2008 VLDB Endowment:1440-1443.
[3]Cristian Duda, Cianni Frey, Donald Kossmann.AJAX Crawl: Making AJAX Application Searchable.IEEE .DOI I 0.1109/ICDE.2009.90:78-89.
[4]Ali Mesbah, Engin Bozdag, Arie van Deursen.Crawling AJAX by Inferring User Interface State Changes.IEEE.DOI 10.1109/ICWE.2008.24:122-134.
[5]羅兵.支持AJAX的互聯(lián)網(wǎng)搜索引擎爬蟲設(shè)計與實現(xiàn)[D].浙江大學(xué),2007:41-54.
[6]曾偉輝.支持AJAX的網(wǎng)絡(luò)爬蟲系統(tǒng)的設(shè)計與實現(xiàn)[D]中國科學(xué)技術(shù)大學(xué),2009:50-54.
[7]袁小節(jié).基于協(xié)議驅(qū)動與事件驅(qū)動的綜合網(wǎng)絡(luò)爬蟲研究與實現(xiàn)[D].國防科學(xué)技術(shù)大學(xué)技研究生院工學(xué)碩士學(xué)位論文,2009:32-36.
[8]夏天.Ajax站點數(shù)據(jù)采集研究綜述[J].情報分析與研究,2010:52-57.
[9]樓玲娣,周小斌.網(wǎng)絡(luò)輿情的運行狀態(tài)分析[J].特區(qū)實踐與理論,2009:22-25.
[10]何昕,謝志鵬.基于簡單樹匹配算法的Web頁而結(jié)構(gòu)相似性度量[J].計算機研究與發(fā)展,2007:1-6.
[11]C.Chang,M.Kayed,M.R.Girgis and K.F.Shaalan.A Survey of Web Information Extraction Systems[J].IEEE Transactions on Knowledge and Data Engineering, 2006,18(10):1411-1428.
[12]Junfeng Wang,Chun Chen,Jian Pei.Can we learn a template-independent wrapper for news article extraction from a single training site[C].Proceedings of the 15th ACM SIGKDD international conference on Knowledge discovery and data mining,2009:1154-1163.
[13]H Zhao,W Meng,C Yu.Mining templates from search result records of search engines[C].International Conference on Knowledge Discovery and Data Mining,2007:623-632.
基金項目:湖南省教育廳科研項目(30972362);國家自然科學(xué)基金項目(30972362,31070568);湖南省自然科學(xué)基金重點項目(10JJ2020)。
作者簡介:
網(wǎng)絡(luò)營銷 網(wǎng)絡(luò)通信 網(wǎng)絡(luò)廣告 網(wǎng)絡(luò)教育研究 網(wǎng)絡(luò)環(huán)境 網(wǎng)絡(luò)安全 網(wǎng)絡(luò)輿論論文 網(wǎng)絡(luò)實訓(xùn)報告 網(wǎng)絡(luò)優(yōu)化論文 網(wǎng)絡(luò)輿情論文 紀律教育問題 新時代教育價值觀