網頁抓取演算法
❶ 網頁信息採集技術的原理是什麼
網頁信息採集技術是通過分析網頁的HTML代碼,
獲取網內的超級鏈接信息,
使用廣度優先搜索演算法和增量存儲演算法,實現自動地連續分析鏈接、抓取文件、處理和保存數據的過程.
系統在再次運行中通過應用屬性對比技術,
在一定程度上避免了對網頁的重復分析和採集,
提高了信息的更新速度和全部搜索率。
由於網站內的資源常常分布在網內不同的機器上,
信息採集系統從某個給定的網址出發,
根據網頁中提供的超鏈接信息,
連續地抓取網頁(既可以是靜態的,
也可以是動態的)
和網路中的文件,
將網內的信息進行全部提取。
❷ 爬蟲抓取究竟是什麼
就是從網頁中,提取出結構化數據。另外的特點,就是自動化,節省人力。通過訪問網站 然後獲取到你想要的信息。
簡要地說爬蟲抓取的是數據或信息。根據不同的行業及應用,爬蟲所抓取的數據各有不同的偏重,一般來說是業務需要那些數據,那抓取對應的數據回來,再經過清洗、轉化等步驟促進業務增長與輔助決策。
抓取目標分類
抓取目標的描述和定義是決定網頁分析演算法與URL搜索策略如何制訂的基礎。而網頁分析演算法和候選URL排序演算法是決定搜索引擎所提供的服務形式和爬蟲網頁抓取行為的關鍵所在。這兩個部分的演算法又是緊密相關的。
現有聚焦爬蟲對抓取目標的描述可分為基於目標網頁特徵、基於目標數據模式和基於領域概念3種。
1、基於目標網頁特徵
基於目標網頁特徵的爬蟲所抓取、存儲並索引的對象一般為網站或網頁。根據種子樣本獲取方式可分為:
(1)預先給定的初始抓取種子樣本。
(2)預先給定的網頁分類目錄和與分類目錄對應的種子樣本,如Yahoo!分類結構等。
(3)通過用戶行為確定的抓取目標樣例,分為:用戶瀏覽過程中顯示標注的抓取樣本;通過用戶日誌挖掘得到訪問模式及相關樣本。
其中,網頁特徵可以是網頁的內容特徵,也可以是網頁的鏈接結構特徵,等等。
2、基於目標數據模式
基於目標數據模式的爬蟲針對的是網頁上的數據,所抓取的數據一般要符合一定的模式,或者可以轉化或映射為目標數據模式。
3、基於領域概念
另一種描述方式是建立目標領域的本體或詞典,用於從語義角度分析不同特徵在某一主題中的重要程度。
❸ 網路爬蟲論文
1、爬蟲技術概述
網路爬蟲(Web crawler),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本,它們被廣泛用於互聯網搜索引擎或其他類似網站,可以自動採集所有其能夠訪問到的頁面內容,以獲取或更新這些網站的內容和檢索方式。從功能上來講,爬蟲一般分為數據採集,處理,儲存三個部分。傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。聚焦爬蟲的工作流程較為復雜,需要根據一定的網頁分析演算法過濾與主題無關的鏈接,保留有用的鏈接並將其放入等待抓取的URL隊列。然後,它將根據一定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重復上述過程,直到達到系統的某一條件時停止。另外,所有被爬蟲抓取的網頁將會被系統存貯,進行一定的分析、過濾,並建立索引,以便之後的查詢和檢索;對於聚焦爬蟲來說,這一過程所得到的分析結果還可能對以後的抓取過程給出反饋和指導。
相對於通用網路爬蟲,聚焦爬蟲還需要解決三個主要問題:
(1) 對抓取目標的描述或定義;
(2) 對網頁或數據的分析與過濾;
(3) 對URL的搜索策略。
2、爬蟲原理
2.1 網路爬蟲原理
Web網路爬蟲系統的功能是下載網頁數據,為搜索引擎系統提供數據來源。很多大型的網路搜索引擎系統都被稱為基於 Web數據採集的搜索引擎系統,比如 Google、Bai。由此可見Web 網路爬蟲系統在搜索引擎中的重要性。網頁中除了包含供用戶閱讀的文字信息外,還包含一些超鏈接信息。Web網路爬蟲系統正是通過網頁中的超連接信息不斷獲得網路上的其它網頁。正是因為這種採集過程像一個爬蟲或者蜘蛛在網路上漫遊,所以它才被稱為網路爬蟲系統或者網路蜘蛛系統,在英文中稱為Spider或者Crawler。
2.3.2寬度優先遍歷策略
寬度優先遍歷策略的基本思路是,將新下載網頁中發現的鏈接直接插入待抓取URL隊列的末尾。也就是指網路爬蟲會先抓取起始網頁中鏈接的所有網頁,然後再選擇其中的一個鏈接網頁,繼續抓取在此網頁中鏈接的所有網頁。還是以上面的圖為例:
遍歷路徑:A-B-C-D-E-F G H I
2.3.3反向鏈接數策略
反向鏈接數是指一個網頁被其他網頁鏈接指向的數量。反向鏈接數表示的是一個網頁的內容受到其他人的推薦的程度。因此,很多時候搜索引擎的抓取系統會使用這個指標來評價網頁的重要程度,從而決定不同網頁的抓取先後順序。
在真實的網路環境中,由於廣告鏈接、作弊鏈接的存在,反向鏈接數不能完全等他我那個也的重要程度。因此,搜索引擎往往考慮一些可靠的反向鏈接數。
2.3.4Partial PageRank策略
Partial PageRank演算法借鑒了PageRank演算法的思想:對於已經下載的網頁,連同待抓取URL隊列中的URL,形成網頁集合,計算每個頁面的PageRank值,計算完之後,將待抓取URL隊列中的URL按照PageRank值的大小排列,並按照該順序抓取頁面。
如果每次抓取一個頁面,就重新計算PageRank值,一種折中方案是:每抓取K個頁面後,重新計算一次PageRank值。但是這種情況還會有一個問題:對於已經下載下來的頁面中分析出的鏈接,也就是我們之前提到的未知網頁那一部分,暫時是沒有PageRank值的。為了解決這個問題,會給這些頁面一個臨時的PageRank值:將這個網頁所有入鏈傳遞進來的PageRank值進行匯總,這樣就形成了該未知頁面的PageRank值,從而參與排序。下面舉例說明:
2.3.5OPIC策略策略
該演算法實際上也是對頁面進行一個重要性打分。在演算法開始前,給所有頁面一個相同的初始現金(cash)。當下載了某個頁面P之後,將P的現金分攤給所有從P中分析出的鏈接,並且將P的現金清空。對於待抓取URL隊列中的所有頁面按照現金數進行排序。
2.3.6大站優先策略
對於待抓取URL隊列中的所有網頁,根據所屬的網站進行分類。對於待下載頁面數多的網站,優先下載。這個策略也因此叫做大站優先策略。
3、爬蟲分類
開發網路爬蟲應該選擇Nutch、Crawler4j、WebMagic、scrapy、WebCollector還是其他的?上面說的爬蟲,基本可以分3類:
(1)分布式爬蟲:Nutch
(2)JAVA爬蟲:Crawler4j、WebMagic、WebCollector
(3)非JAVA爬蟲:scrapy(基於python語言開發)
3.1 分布式爬蟲
爬蟲使用分布式,主要是解決兩個問題:
1)海量URL管理
2)網速
現在比較流行的分布式爬蟲,是Apache的Nutch。但是對於大多數用戶來說,Nutch是這幾類爬蟲里,最不好的選擇,理由如下:
1)Nutch是為搜索引擎設計的爬蟲,大多數用戶是需要一個做精準數據爬取(精抽取)的爬蟲。Nutch運行的一套流程里,有三分之二是為了搜索引擎而設計的。對精抽取沒有太大的意義。也就是說,用Nutch做數據抽取,會浪費很多的時間在不必要的計算上。而且如果你試圖通過對Nutch進行二次開發,來使得它適用於精抽取的業務,基本上就要破壞Nutch的框架,把Nutch改的面目全非,有修改Nutch的能力,真的不如自己重新寫一個分布式爬蟲框架了。
2)Nutch依賴hadoop運行,hadoop本身會消耗很多的時間。如果集群機器數量較少,爬取速度反而不如單機爬蟲快。
3)Nutch雖然有一套插件機制,而且作為亮點宣傳。可以看到一些開源的Nutch插件,提供精抽取的功能。但是開發過Nutch插件的人都知道,Nutch的插件系統有多蹩腳。利用反射的機制來載入和調用插件,使得程序的編寫和調試都變得異常困難,更別說在上面開發一套復雜的精抽取系統了。而且Nutch並沒有為精抽取提供相應的插件掛載點。Nutch的插件有隻有五六個掛載點,而這五六個掛載點都是為了搜索引擎服務的,並沒有為精抽取提供掛載點。大多數Nutch的精抽取插件,都是掛載在「頁面解析」(parser)這個掛載點的,這個掛載點其實是為了解析鏈接(為後續爬取提供URL),以及為搜索引擎提供一些易抽取的網頁信息(網頁的meta信息、text文本)。
4)用Nutch進行爬蟲的二次開發,爬蟲的編寫和調試所需的時間,往往是單機爬蟲所需的十倍時間不止。了解Nutch源碼的學習成本很高,何況是要讓一個團隊的人都讀懂Nutch源碼。調試過程中會出現除程序本身之外的各種問題(hadoop的問題、hbase的問題)。
5)很多人說Nutch2有gora,可以持久化數據到avro文件、hbase、mysql等。很多人其實理解錯了,這里說的持久化數據,是指將URL信息(URL管理所需要的數據)存放到avro、hbase、mysql。並不是你要抽取的結構化數據。其實對大多數人來說,URL信息存在哪裡無所謂。
6)Nutch2的版本目前並不適合開發。官方現在穩定的Nutch版本是nutch2.2.1,但是這個版本綁定了gora-0.3。如果想用hbase配合nutch(大多數人用nutch2就是為了用hbase),只能使用0.90版本左右的hbase,相應的就要將hadoop版本降到hadoop 0.2左右。而且nutch2的官方教程比較有誤導作用,Nutch2的教程有兩個,分別是Nutch1.x和Nutch2.x,這個Nutch2.x官網上寫的是可以支持到hbase 0.94。但是實際上,這個Nutch2.x的意思是Nutch2.3之前、Nutch2.2.1之後的一個版本,這個版本在官方的SVN中不斷更新。而且非常不穩定(一直在修改)。
所以,如果你不是要做搜索引擎,盡量不要選擇Nutch作為爬蟲。有些團隊就喜歡跟風,非要選擇Nutch來開發精抽取的爬蟲,其實是沖著Nutch的名氣(Nutch作者是Doug Cutting),當然最後的結果往往是項目延期完成。
如果你是要做搜索引擎,Nutch1.x是一個非常好的選擇。Nutch1.x和solr或者es配合,就可以構成一套非常強大的搜索引擎了。如果非要用Nutch2的話,建議等到Nutch2.3發布再看。目前的Nutch2是一個非常不穩定的版本。
❹ matlab 軟體怎麼抓取網頁數據
str = urlread(URL)
str = urlread(URL,Name,Value)
[str,status]
= urlread(___)
❺ Python爬網頁
1、網路爬蟲基本原理
傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定
停止條件。聚焦爬蟲的工作流程較為復雜,需要根據一定的網頁分析演算法過濾與主題無關的鏈接,保留有用的鏈接並將其放入等待抓取的URL隊列。然後,它將根
據一定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重復上述過程,直到達到系統的某一條件時停止。
2、設計基本思路
正如你所說,先到微博登陸頁面模擬登錄,抓取頁面,從頁面中找出所有URL,選擇滿足要求的URL文本說明,模擬點擊這些URL,重復上面的抓取動作,直到滿足要求退出。
3、現有的項目
google project網站有一個項目叫做sinawler,就是專門的新浪微博爬蟲,用來抓取微博內容。網站上不去,這個你懂的。不過可以網路一下「python編寫的新浪微博爬蟲(現在的登陸方法見新的一則微博)「,可以找到一個參考的源碼,他是用python2寫的。如果用python3寫,其實可以使用urllib.request模擬構建一個帶cookies的瀏覽器,省去對cookies的處理,代碼可以更加簡短。
4、此外
看下網路爬蟲的網路,裡面很多比較深入的內容,比如演算法分析、策略體系,會大有幫助,從理論角度提升代碼的技術層次。
❻ 搜索引擎如何抓取互聯網頁面
先說說搜索引擎的原理吧。搜索引擎是把互聯網上的網頁內容存在自己的伺服器上,當用戶搜索某個詞的時候,搜索引擎就會在自己的伺服器上找相關的內容,這樣就是說,只有保存在搜索引擎伺服器上的網頁才會被搜索到。哪些網頁才能被保存到搜索引擎的伺服器上呢?只有搜索引擎的網頁抓取程序抓到的網頁才會保存到搜索引擎的伺服器上,這個網頁抓取程序就是搜索引擎的蜘蛛.整個過程分為爬行和抓取。
一、蜘蛛
搜索引擎用來爬行和訪問網站頁面的程序被稱為蜘蛛,也可稱之為機器人。蜘蛛訪問瀏覽器,就和我們平時上網一個樣子,蜘蛛同樣會申請訪問,得到允許後才可以瀏覽,可是有一點,搜索引擎為了提高質量和速度,它會放很多蜘蛛一起去爬行和抓取。
蜘蛛訪問任何一個網站時,都會先去訪問網站根目錄下的robots.txt文件。如果robots.txt文件禁止搜索引擎抓取某些文件或目錄,蜘蛛將遵守協議,不抓取被禁止的網址。
和瀏覽器一樣,搜索引擎蜘蛛也有表明自己身份的代理名稱,站長可以在日誌文件中看到搜索引擎的特定代理名稱,從而辨識搜索引擎蜘蛛。
二、跟蹤鏈接
為了抓取網上盡量多的頁面,搜索引擎蜘蛛會跟蹤頁面上的鏈接,從一個頁面爬到下一個頁面,就好像蜘蛛在蜘蛛網上爬行一樣。
整個互聯網是有相互鏈接的網站及頁面組成的。當然,由於網站及頁面鏈接結構異常復雜,蜘蛛需要採取一定的爬行策略才能遍歷網上所有頁面。
最簡單的爬行的策略有:深度優先和廣度優先。
1、深度鏈接
深度優先指當蜘蛛發現一個鏈接時,它就會順著這個鏈接指出的路一直向前爬行,直到前面再也沒其他鏈接,這時就會返回第一個頁面,然後會繼續鏈接再一直往前爬行。
2、廣度鏈接
從seo角度講鏈接廣度優先的意思是講的蜘蛛在一個頁面發現多個鏈接的時候,不是跟著一個鏈接一直向前,而是把頁面上所有第一層鏈接都爬一遍,然後再沿著第二層頁面上發現的鏈接爬向第三層頁面。
從理論上說,無論是深度優先還是廣度優先,只要給蜘蛛足夠的時間,都能爬完整個互聯網。在實際工作中,沒有什麼東西是無限的,蜘蛛的帶寬資源和蜘蛛的時間也是一樣都是有限的,也不可能爬完所有頁面。實際上最大的搜索引擎也只是爬行和收錄了互聯網的一小部分。
3.吸引蜘蛛
蜘蛛式不可能抓取所有的頁面的,它只會抓取重要的頁面,那麼哪些頁面被認為比較重要呢?有以下幾點:
(1)網站和頁面權重
(2)頁面更新度
(3)導入鏈接
(4)與首頁點擊距離
4.地址庫
搜索引擎會建立一個地址庫,這么做可以很好的避免出現過多抓取或者反復抓取的現象,記錄已經被發現還沒有抓取的頁面,以及已經被抓取的頁面。
地址庫中的URL有以下幾個來源:
(1)人工錄入的種子網站。
(2)蜘蛛抓取頁面後,從HTML中解析出新的鏈接URL,與地址庫中的數據進行對比,如果是地址庫中沒有的網址,就存入待訪問地址庫。
(3)搜索引擎自帶的一種表格提供站長,方便站長提交網址。