瀏覽器和網路爬蟲是兩種不同的網路客戶端,都以相同的方式來獲取網頁:
1)首先, 客戶端程式連線到網域名稱系統(dns)伺服器上,dns伺服器將主機 名轉換成ip 位址。
2)接下來,客戶端試著連線具有該ip位址的伺服器。伺服器上可能有多個 不同程序程式在執行,每個程序程式都在監聽網路以發現新的選接。.各個程序監聽不同的網路埠 (port). 埠是乙個l6位的數卞,用來辨識不同的服務。http請求一般預設都是80埠。
3) 一旦建立連線,客戶端向伺服器傳送乙個http請求,伺服器接收到請求後,返回響應結果給客戶端。
4)客戶端關閉該連線。
詳細了解http工作原理:網路互聯參考模型(詳解)和apache執行機制剖析
但是瀏覽器是使用者主動操作然後完成http請求,而爬蟲需要自動完成http請求,網路爬蟲需要一套整體架構完成工作。
儘管爬蟲技術經過幾十年的發展,從整體框架上已相對成熟,但隨著網際網路 的不斷發展,也面臨著一些有挑戰性的新問題。 通用爬蟲框架如下圖:
通用爬蟲框架
通用的爬蟲框架流程:
2)將這些種子url放入待抓取url佇列中;
在爬蟲系統中,待抓取url佇列是很重要的一部分。待抓取url佇列中的url以什麼樣的順序排列也是乙個很重要的問題,因為這涉及到先抓取那個頁面,後抓取哪個頁面。而決定這些url排列順序的方法,叫做抓取策略。
3.1 深度優先搜尋策略(順藤摸瓜)我們使用圖的方式來說明:
我們假設網際網路就是張有向圖,圖中每個頂點代表乙個網
頁。 設初始狀態是圖中所有頂點未曾被訪問,則深度優先搜尋可從圖中某個頂點發v 出發,訪問此頂點,然後依次從v 的未被訪問的鄰接點出發深度優先遍歷圖,直至圖中所有和v 有路徑相通的頂點都被訪問到;若此時圖中尚有頂點未被訪問,則另選圖中乙個未曾被訪問的頂點作起始點,重複上述過程,直至圖中所有頂點都被訪問到為止。
以如下圖的無向圖g1為例,進行圖的深度優先搜尋:
g1搜尋過程:
3.2 廣度優先搜尋策略
還是以上面的圖為例,抓取過程如下:
廣度搜尋過程:
首先訪問頁面v1 和v1 的鄰接點v2 和v3,然後依次訪問v2 的鄰接點v4 和v5 及v3 的鄰接點v6 和v7,最後訪問v4 的鄰接點v8。由於這些頂點的鄰接點均已被訪問,並且圖中所有頂點都被訪問,由些完成了圖的遍歷。得到的頂點訪問序列為:
v1→v2 →v3 →v4→ v5→ v6→ v7 →v8
和深度優先搜尋類似,在遍歷的過程中也需要乙個訪問標誌陣列。並且,為了順次訪問路徑長度為2、3、…的頂點,需附設佇列以儲存已被訪問的路徑長度為1、2、… 的頂點。
3.2 最佳優先搜尋策略
最佳優先搜尋策略按照一定的網頁分析演算法,**候選url與目標網頁的相似度,或與主題的相關性,並選取評價最好的乙個或幾個url進行抓取。
3.3.反向鏈結數策略
反向鏈結數是指乙個網頁被其他網頁鏈結指向的數量。反向鏈結數表示的是乙個網頁的內容受到其他人的推薦的程度。因此,很多時候搜尋引擎的抓取系統會使用這個指標來評價網頁的重要程度,從而決定不同網頁的抓取先後順序。
在真實的網路環境中,由於廣告鏈結、鏈結的存在,反向鏈結數不能完全等他我那個也的重要程度。因此,搜尋引擎往往考慮一些可靠的反向鏈結數。
3.4.partial pagerank策略,即最佳優先搜尋策略
應用的知識:
1,gfs,使用gfs分布式檔案系統儲存海量文件。
2,bittable,在gfs的基礎上構建bittable的資料模型;
3,megastore儲存模型又建立在bittable之上的儲存和計算模型。
4,map/reduce雲計算模型和系統計算框架。
4.1 bittable儲存原始的網頁資訊
如圖4-1所示的邏輯模型,示例crawldb table用於儲存爬蟲抓取的網頁資訊,
其中:row key為網頁的url,出於排序效率考慮,url中主機網域名稱字元順序往往被反置,如www.facebook.com被處理為com.facebook.www;
column family包括title、content、anchor,其中tile儲存網頁的標題,content儲存網頁html內容,anchor儲存網頁被其它網頁引用的鏈結,qualifier就是其它網頁的url,內容為其它網頁中該鏈結的頁面顯示字元,同樣anchor鏈結的url主機域字串被反置。對於不同時間獲取的同一網頁的有關內容被打上不同的時間戳timestampe,如圖縱向座標可以看到不同的版本。
圖4-1crawldb table 邏輯模型
在實際的儲存中,圖4-1所示的多維邏輯結構會被二維平面化為(key, value)對,並且進行排序。在(key,value)中,key由四維鍵值組成,包括:row key, columnfamily(處理時使用8位元編碼), column qualifier和timestamp,如圖4-2所示,為key的實際結構,在對key進行排序過程中,有最新timestamp的key會被排在最前面,flag項用於標明系統需要對該(key,value)記錄進行的操作符,如增加、刪除、更新等。
圖4-2 key結構圖
如圖4-3是crawldb二維平面化後經過排序的格式。圖中key列中的資訊由row key(頁面的url)、column family、column qualifer和timestamp組成,其中並未顯示key flag項,flag項主要用於表項處理。
圖4-3 crawldb表的key/valuye 列表
圖4-4顯示了crawldb table的cellstore檔案格式。cellstore檔案中儲存了經過排序後的key,value對,物理上,這些資料都被壓縮後儲存,以大約64k大小的塊為單位組織;在檔案結尾處,保留有三個索引部分:bloom filter、塊索引(row key + 塊在檔案內的偏移)、trailer。
map/reduce計算模型處理網頁資訊:網頁去重和生成倒排索引
網頁去重我們採用簡單策略,目標是將網頁集合內所有內容相同的網頁找出來,採 取對網頁內容取雜湊值的方法,比如md5, 如果兩個網頁的md5值相同,則可以認為兩 頁內容完全相同。 在map/reduce框架下,輸入資料是網頁本身,可以用網頁的url作為輸入資料的key, 網頁內容是輸入資料的value; map操作則對每個網頁的內容利用md5計算雜湊值,以這 個雜湊值作為中間資料的key, 網頁的url作為中間資料的value: reduce操作則將相同 key的中間資料對應的url建立成乙個鍊錶結構,這個鍊錶代表了具有相同網頁內容雜湊 值的都有哪些網頁。這樣就完成了識別內容相同網頁的任務。
對於建立倒排索引這個任務來說,如圖4-6所示,輸入資料也是網頁,以網頁的docid作為輸入資料 的key, 網頁**現的單詞集合是輸入資料的 value; map 操作將輸入資料轉化為 (word,docid)的形式,即某個單詞作為key, docid作為中間資料的value,其含義是單詞 word在docid這個網頁出現過;reduce操作將中間資料中相同key的記錄融合,得到某 個單詞對應的網頁id列表: 。這就是單詞word對應的倒排列表。通過 這種方式就可以建立簡單的倒排索引,在reduce階段也可以做些複雜操作,獲得形式更為複雜的倒排索引。
圖4-6
《這就是搜尋引擎:核心技術詳解》
《搜尋引擎—資訊檢索實踐》
搜尋引擎 網路爬蟲
原文出自 瀏覽器和網路爬蟲是兩種不同的網路客戶端,都以相同的方式來獲取網頁 1 首先,客戶端程式連線到網域名稱系統 dns 伺服器上,dns伺服器將主機 名轉換成ip 位址。2 接下來,客戶端試著連線具有該ip位址的伺服器。伺服器上可能有多個 不同程序程式在執行,每個程序程式都在監聽網路以發現新的選...
搜尋引擎 網路爬蟲
5 多執行緒 主要目的減少cpu資源的浪費 通過網路爬蟲獲取網域名稱,得到網域名稱之後,查詢,對比,存到資料庫中,更新 拿新資訊,將一些訪問量大的資訊存入快取中 6 一般伺服器為30 40個執行緒 7 seo 搜尋排名優化技術 8 執行緒池 代替我們管理執行緒,相當於乙個執行緒框架,執行緒池中有乙個...
搜尋引擎之網路爬蟲
1 網路爬蟲結構 網路爬蟲把網路分為5個部分 5不可知網頁集合 即爬蟲無法獲取的網頁,而且這部分網頁佔較大比例 2 爬蟲分類 1批量型 有明確抓取範圍和目標,達到目標停止抓取,目標可以使網頁輸也可以是時間量。2增量型 會保持不斷的抓取2 爬蟲分類 1批量型 有明確抓取範圍和目標,達到目標停止抓取,目...