python爬蟲流程和主要注意事項

爬蟲的主要工作流程

  • 設定抓取目標(種子頁面/起始頁面)並獲取網頁
  • 當服務器無法訪問時,按照指定的重試次數嘗試重新下載頁面
  • 在需要的時候設置用戶代理或隱藏真實IP,否則可能無法訪問頁面
  • 對獲取的頁面進行必要的解碼操作然後抓取出需要的信息
  • 在獲取的頁面中通過某種方式(如正則表達式)抽取出頁面中的鏈接信息
  • 對鏈接進行進一步的處理(獲取頁面並重覆上面的動作)
  • 將有用的信息進行持久化以備後續的處理

爬蟲的注意事項

  • 處理相對鏈接。有的時候我們從頁面中獲取的鏈接不是一個完整的絕對鏈接而是一個相對鏈接,這種情況下需要將其與URL前綴進行拼接(urllib.parse中的urljoin()函數可以完成此項操作)
  • 設置代理服務。有些網站會限制訪問的區域(例如美國的Netflix屏蔽了很多國家的訪問),有些爬蟲需要隱藏自己的身份,在這種情況下可以設置使用代理服務器,代理服務器有免費的服務器和付費的商業服務器,但後者穩定性和可用性都更好,強烈建議在商業項目中使用付費的代理服務器。可以通過修改urllib.request中的ProxyHandler來爲請求設置代理服務器
  • 限制下載速度。如果我們的爬蟲獲取網頁的速度過快,可能就會面臨被封禁或者產生“損害動產”的風險(這個可能會導致喫官司且敗訴),可以在兩次下載之間添加延時從而對爬蟲進行限速
  • 避免爬蟲陷阱。有些網站會動態生成頁面內容,這會導致產生無限多的頁面(例如在線萬年曆通常會有無窮無盡的鏈接)。可以通過記錄到達當前頁面經過了多少個鏈接(鏈接深度)來解決該問題,當達到事先設定的最大深度時爬蟲就不再像隊列中添加該網頁中的鏈接了
  • SSL相關問題。在使用urlopen打開一個HTTPS鏈接時會驗證一次SSL證書,如果不做出處理會產生錯誤提示“SSL: CERTIFICATE_VERIFY_FAILED”,可以通過以下兩種方式加以解決
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章