公司程序猿在開發產品的過程中,不斷擴展自己的知識體系。並為非技術部的同事普及爬蟲原理。小愛學習完之後發現對SEO優化還是有幫助的唷!
1.2 爬蟲組成
網絡爬蟲主要由控制器,解析器,資源庫組成。
中央控制器:根據系統傳過來的URL鏈接,分配一線程,啟動線程調用爬蟲爬取網頁。
解析器:是爬蟲的主要部分,負責下載網頁,對網頁的文本進行處理,如過濾功能,抽取特殊HTML標簽的功能,分析數據功能。
資源庫:主要是用來存儲網頁中下載下來的數據記錄的容器,並提供生成索引的目標源。中大型的數據庫產品有:Oracle、Sql Server等。
1.3 爬蟲類型
一般分傳統爬蟲和聚集爬蟲。
(1)傳統爬蟲,從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,抓取之後,通過源碼解析來獲得想要的內容。
(2)聚焦爬蟲:根據一定的網頁分析算法過濾與主題無關的鏈接,重復上述過程,直到達到系統的某一條件時停止所有被爬蟲抓取的網頁將會被系統存貯。
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”開頭的狀態碼表示服務器端發現自己出現錯誤,不能繼續執行請求 處理方式:丟棄