爬蟲筆記(一)
網絡爬蟲(又被稱爲網頁蜘蛛,網絡機器人,在FOAF社區中間,更經常的稱爲網頁追逐者),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本(參考百度百科)。
一、爬蟲分類
爬蟲,可分爲四大類(通用爬蟲、聚焦爬蟲、增量式爬蟲、深度爬蟲)對應不同的需求場景。
- 通用爬蟲
通用網絡爬蟲又稱全網爬蟲(Scalable Web Crawler),爬行對象從一些種子 URL 擴充到整個 Web,這類網絡爬蟲的爬行範圍和數量巨大,對於爬行速度和存儲空間要求較高,對於爬行頁面的順序要求相對較低,通常採用並行的工作方式。
通用網絡爬蟲的結構通常分爲可以分爲頁面爬行模塊 、頁面分析模塊、鏈接過濾模塊、頁面數據庫、URL 隊列、初始 URL 集合幾個部分。
- 聚焦爬蟲
聚焦網絡爬蟲(Focused Crawler),是指選擇性地爬行那些與預先定義好的主題相關頁面的網絡爬蟲。 和通用網絡爬蟲相比,聚焦爬蟲只需要爬行與主題相關的頁面。聚焦網絡爬蟲和通用網絡爬蟲相比,考慮到了爬行策略,根據每個鏈接的重要性不同,在URL隊列中的優先級也會不同。
二、爬行策略
通用爬蟲對於URL隊列的排序要求可能不是很高,但對於聚焦爬蟲則不同。爲了節省資源,聚焦爬蟲會根據爬行策略,結合預先定義好的爬取主題,對URL隊列中的鏈接進行排序,優先爬取排名靠前的URL鏈接。常見的爬行策略有:深度優先策略、廣度優先策略、大戰優先策略、反鏈策略(根據被其他網頁指向的次數來進行優先級判定)、OPIC策略、Partial PageRank策略等。
三、網頁更新策略
對於爬取存至數據庫的數據,有的內容基本不會有太大變動,但是有的內容可能具有一定的實效性,因此需要根據網頁的更新頻率對網頁內容進行週期性的爬取,保證保存的數據是較新的。常用的網頁更新策略主要有:用戶體驗策略、歷史數據策略、聚類分析策略等。
- 用戶體驗策略
搜索引擎在查詢某個關鍵的時候,會有一個排名結果,排名結果中會有大量的網頁,但是,大部分的用戶只會關注排名靠前的網頁。爬蟲會優先更新排名結果考前的網頁。這種更新策略,稱之爲用戶體驗策略。 - 歷史數據策略
爬蟲該何時去爬取結果考前的網頁?在爬取的過程中,如果保留對應的網頁的多個歷史版本,並進行對應的分析,依據多個歷史版本的內容更新、收索質量影響、用戶體驗等信息,來確定網頁的爬取週期。我們同樣也可以依據某個網頁的歷史更新數據,通過泊松過程進行建模等手段,預測該網頁下一次更新的時間。 - 聚類分析策略
以上兩種策略,都需要歷史數據作爲依據。對於新的網頁可能不太公平,因此需要採取新的更新策略,常見的如:聚類分析策略。
所謂物以類聚、人以羣分,聚在一起的事務一定有某種共性。將聚類分析算法運用在爬蟲對網頁的更新上,大致過程如下:
四、網頁的請求類型
請求類型分爲兩種(Get\Post)
Get——req.Request(url,header)
Post——req.Request(url,header,postdata)
具體的用法,會在下一次的博客中進行詳細的介紹。
五、網頁請求的常見錯誤
Number | Code | 含義 |
---|---|---|
200 | OK | 一切正常 |
301 | Moved Permanently | 重定向到新的URL,永久性 |
302 | Found | 重定向到新的URL,非永久性 |
304 | Not Modified | 請求資源未更新 |
301 | Moved Permanently | 重定向到新的URL,永久性 |
302 | Found | 重定向到新的URL,非永久性 |
400 | Bad Request | 非法請求 |
403 | Forbidden | 禁止訪問 |
404 | Not Found | 沒有找到對應頁面 |
500 | Internal Server Error | 服務器內部錯誤 |
501 | Not Implemented | 服務器不支持實現請求所需要的功能 |
302 | Found | 重定向到新的URL,非永久性 |