1.1?爬蟲定義
爬蟲是一個抓取網頁的計算機程序,它在互聯網中漫游,發現和搜集信息。日夜不停地運行,盡可能多、盡可能快地搜集各種類型的新信息,同時因為互聯網上的信息更新很快,所以還要定期更新已經搜集過的舊信息,以避免死連接和無效連接。
1.2?第一個爬蟲
RBSE?(Eichmann,1994)是第一個發布的爬蟲。它有兩個基礎程序。第一個是“spider”,抓取隊列中的內容到一個關系數據庫中,第二個程序是“mite”,是一個修改后的www的ASCII瀏覽器,負責從網絡上下載頁面。?
1.3?日常生活接觸
Baiduspider,?Googlebot。
1.4?爬蟲組成
網絡爬蟲主要由控制器,解析器,資源庫組成。
中央控制器:根據系統傳過來的URL鏈接,分配一線程,啟動線程調用爬蟲爬取網頁。
解析器:是爬蟲的主要部分,負責下載網頁,對網頁的文本進行處理,如過濾功能,抽取特殊HTML標簽的功能,分析數據功能。
資源庫:主要是用來存儲網頁中下載下來的數據記錄的容器,并提供生成索引的目標源。中大型的數據庫產品有:Oracle、Sql?Server等。
1.5?爬蟲類型
一般分傳統爬蟲和聚集爬蟲。
(1)傳統爬蟲,從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,抓取之后,通過源碼解析來獲得想要的內容。
(2)聚焦爬蟲:根據一定的網頁分析算法過濾與主題無關的鏈接,重復上述過程,直到達到系統的某一條件時停止所有被爬蟲抓取的網頁將會被系統存貯。
抓取對象:靜態網頁、文件對象、動態網頁、特殊內容。
特殊內容:比如RSS、XML數據,情況特殊需特殊處理。如新聞的滾動新聞頁面,需要爬蟲不停地監控掃描,發現新內容馬上就進行抓取。
使用爬蟲的代價包括:
(1)網絡資源:在很長一段時間,爬蟲使用相當的帶寬高度并行地工作。
(2)服務器超載:尤其是對給定服務器的訪問過高時。
(3)邏輯糟糕的爬蟲,可能導致服務器或者路由器癱瘓,或者會嘗試下載自己無法處理的頁面。?
個人爬蟲,如果過多的人使用,可能導致網絡或者服務器阻塞。
樂思網絡信息采集系統比網絡爬蟲的功能更加強大,它能夠采集新聞、論壇、微博、微信等媒介上的信息,可以這樣說,只要是互聯網上公開可見的信息,我們的系統都可以采集。樂思采集軟件系的主要功能是批量而精確地將互聯網目標網頁中的半結構化數據抽取為結構化的記錄,保存在本地數據庫中,以便進一步分析使用。
新鮮度和過時性
爬蟲的目標是盡可能高的提高頁面的新鮮度
同時降低頁面的過時性
5.1?一般抓取方法:
(1)從一個起始URL集合開始,以一定的規則循環在互聯網中發現信息。這些起始URL可以是任意的URL,但常常是一些非常流行、包含很多鏈接的站點(如Yahoo!)
(2)劃分:將Web空間按照域名、IP地址或國家域名劃分,每個搜索器負責一個子空間的窮盡搜索。
5.2?抓取策略
網頁的抓取策略可以分為深度優先、廣度優先和最佳優先三種。
深度優先在很多情況下會導致爬蟲的陷入(trapped)問題。
目前常見的是廣度優先和最佳優先方法。
5.3?策略選擇
(1)選擇策略,決定所要下載的頁面;
①重新訪問策略,決定什么時候檢查頁面的更新變化;
②?平衡禮貌策略,指出怎樣避免站點超載;
②并行策略,指出怎么協同達到分布式抓取的效果;
(2)提示:為了獲取更好的抓取策略,更多有關網頁質量的信息應該考慮進去。
5.4?注意事項
爬蟲開發的主要問題是性能和反封鎖。
很多時候,采用高并發高頻率抓取數據是可行的,前提是目標站點沒有采用任何反爬措施(訪問頻率限制、防火墻、驗證碼……)。
更多時候,有價值的信息,一定伴隨著嚴格的反爬措施,一旦ip被封,什么組件都沒戲了。?
Robots協議
Robots協議(也稱為爬蟲協議、機器人協議等),
全稱是“網絡爬蟲排除標準”(Robots?Exclusion?Protocol),
網站通過Robots協議告訴搜索引擎哪些頁面可以抓取,
哪些頁面不能抓取。
.htaccess文件是Apache服務器中的一個配置文件,它負責相關目錄下的網頁配置。
通過htaccess文件,可以幫我們實現:網頁301重定向、自定義404錯誤頁面、改變文件擴展名、允許/阻止特定的用戶或者目錄的訪問、禁止目錄列表、配置默認文檔等功能。
HTTP狀態碼通常分為5種類型,分別以1~5五個數字開頭,由3位整數組成:
200:請求成功??????處理方式:獲得響應的內容,進行處理?
201:請求完成,結果是創建了新資源。新創建資源的URI可在響應的實體中得到????處理方式:爬蟲中不會遇到?
202:請求被接受,但處理尚未完成????處理方式:阻塞等待?
204:服務器端已經實現了請求,但是沒有返回新的信?息。如果客戶是用戶代理,則無須為此更新自身的文檔視圖。????處理方式:丟棄
300:該狀態碼不被HTTP/1.0的應用程序直接使用,?只是作為3XX類型回應的默認解釋。存在多個可用的被請求資源。????處理方式:若程序中能夠處理,則進行進一步處理,如果程序中不能處理,則丟棄301:請求到的資源都會分配一個永久的URL,這樣就可以在將來通過該URL來訪問此資源????處理方式:重定向到分配的URL302:請求到的資源在一個不同的URL處臨時保存?????處理方式:重定向到臨時的URL?
304?請求的資源未更新?????處理方式:丟棄?
400?非法請求?????處理方式:丟棄?
401?未授權?????處理方式:丟棄?
403?禁止?????處理方式:丟棄?
404?沒有找到?????處理方式:丟棄
5XX?回應代碼以“5”開頭的狀態碼表示服務器端發現自己出現錯誤,不能繼續執行請求????處理方式:丟棄