爬蟲編寫


爬蟲技術:

基於目標數據模式的爬蟲針對的是網頁上的數據,所抓取的數據一般要符合一定的模式,或者可以轉化或映射為目標數據模式。

爬蟲策略:

網頁的抓取策略可以分為深度優先、廣度優先和最佳優先三種。深度優先在很多情況下會導致爬蟲的陷入問題,目前常見的是廣度優先和最佳優先方法。在編寫爬蟲的時候可以考慮使用廣度優先和最佳優先的方法。

  廣度優先搜索策 略是指在抓取過程中,在完成當前層次的搜索后,才進行下一層次的搜索。該算法的設計和實現相對簡單。在目前為覆蓋盡可能多的網頁,一般使用廣度優先搜索方 法。也有很多研究將廣度優先搜索策略應用於聚焦爬蟲中。其基本思想是認為與初始URL在一定鏈接距離內的網頁具有主題相關性的概率很大。另外一種方法是將 廣度優先搜索與網頁過濾技術結合使用,先用廣度優先策略抓取網頁,再將其中無關的網頁過濾掉。這些方法的缺點在於,隨着抓取網頁的增多,大量的無關網頁將被下載並過濾,算法的效率將變低。最佳優先搜索策略按照一定的網頁分析算法,預測候選URL與目標網頁的相似度,或與主題的相關性,並選取評價最好的一個或幾個URL進行抓取。它只訪問經過網頁分析算法預測為“有用”的網頁。存在的一個問題是,在爬蟲抓取路徑上的很多相關網頁可能被忽略,因為最佳優先策略是一種局部最優搜索算法。因此需要將最佳優先結合具體的應用進行改進,以跳出局部最優點。將在第4節中結合網頁分析算法作具體的討論。研究表明,這樣的閉環調整可以將無關網頁數量降低30%~90%。

爬蟲的行為策略有以下幾點:1、選擇策略:選擇要下載的頁面;2、重新訪問策略:頁面什么時候會更新;3、並行策略:通過分布式抓取獲得更好的效果。

爬蟲的組成   在網絡爬蟲的系統框架中, 主過程由控制器,解析器,資源庫三部分組成。控制器的主要工作是負責給多線程中的各個爬蟲線程分配工作任務。解析器的主要工作是下載網頁,進行頁面的處 理,主要是將一些JS腳本標簽、CSS代碼內容、空格字符、HTML標簽等內容處理掉,爬蟲的基本工作是由解析器完成。資源庫是用來存放下載到的網頁資 源,一般都采用大型的數據庫存儲,如Oracle數據庫,並對其建立索引。   

控制器   控制器是網絡爬蟲的中央控制器,它主要是負責根據系統傳過來的URL鏈接,分配一線程,然后啟動線程調用爬蟲爬取網頁的過程。   

解析器   解析器是負責網絡爬蟲的主要部分,其負責的工作主要有:下載網頁的功能,對網頁的文本進行處理,如過濾功能,抽取特殊HTML標簽的功能,分析數據功能。   

資源庫   主要是用來存儲網頁中下載下來的數據記錄的容器,並提供生成索引的目標源。

其他:

URL一般化  爬蟲應當執行幾種類型的URL規范化來避免重復抓取某些資源。URL一般化也被稱為URL標准化,指的是修正URL並且使其前后一致的過程。

爬蟲身份識別   網絡爬蟲通過使用http請求的用戶代理字段來向網絡服務器表明他們的身份。網絡管理員則通過檢查網絡服務器的日志,使用用戶代理字段來辨認哪一個爬蟲曾經訪問過以及它訪問的頻率。用戶代理字段可能會包含一個可以讓管理員獲取爬蟲更多信息的URL。郵件抓取器和其他懷有惡意的網絡爬蟲通常不會留任何的用戶代理字段內容,或者他們也會將他們的身份偽裝成瀏覽器或者其他的知名爬蟲。留下用戶標志信息是十分重要的;這樣,網絡管理員在需要的時候就可以聯系爬蟲的主人。有時,爬蟲可能會陷入爬蟲陷阱或者是一個服務器超負荷,這時,爬蟲主人需要使爬蟲停止。對那些有興趣了解特定爬蟲訪問時間網絡管理員來講,用戶標識信息是十分重要的。

代碼:爬蟲有一些是開源的,可以通過學習這些開源代碼來更好的理解爬蟲並且編寫出自己的爬蟲。

爬蟲編寫中要注意的一些問題:

顯示狀態:在狀態欄顯示統計作息,排入隊列URL數,已下載文件數,已下載總字節數,CPU使用率和可用內存等,便於把握機器當前的狀態,根據機器的狀態來修改策略,提高效率。

偏好性:針對攫取資源類型設置不同的優先級。

健壯性:設定URL正規化策略以排除冗余下載、爬蟲陷阱避免策略的使用等,多種策略以解析相對路徑等。

爬蟲禮儀:要遵循爬蟲禁止協議,避免對服務器資源的過度使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM