python 爬蟲

一. 關於爬蟲

爬蟲,是一種按照一定的規則自動地抓取互聯網信息的程序。它的本質是利用程序獲取對我們有利的數據。

反爬蟲,從不是將爬蟲完全杜絕;而是想辦法將爬蟲的訪問量限制在一個可接納的範圍,不要讓它過於肆無忌憚。

爲什麼不是禁止呢?原因很簡單。爬蟲代碼寫到最後,已經和真人訪問網絡毫無區別。服務器的那一端完全無法判斷是人還是爬蟲。如果想要完全禁止爬蟲,正常用戶也會無法訪問。所以只能想辦法進行限制,而非禁止。

二. 提高爬蟲效率的方法

  1. 協程。採用協程,讓多個爬蟲一起工作,可以大幅度提高效率。
  2. 多進程。使用CPU的多個核,使用幾個核就能提高几倍。
  3. 多線程。將任務分成多個,併發(交替)的執行。
  4. 分佈式爬蟲。讓多個設備去跑同一個項目,效率也能大幅提升。
  5. 打包技術。可以將python文件打包成可執行的exe文件,讓其在後臺執行即可。
  6. 其他。比如,使用網速好的網絡等等。

三. 反爬蟲的措施

  1. 限制請求頭,即request header。解決方法:我們可以填寫user-agent聲明自己的身份,有時還要去填寫origin和referer聲明請求的來源。
  2. 限制登錄,即不登錄就不能訪問。解決方法:我們可以使用cookies和session的知識去模擬登錄。
  3. 複雜的交互,比如設置“驗證碼”來阻攔登錄。這就比較難做,解決方法1:我們用Selenium去手動輸入驗證碼;方法2:我們用一些圖像處理的庫自動識別驗證碼(tesserocr/pytesserart/pillow)。
  4. ip限制。如果這個IP地址,爬取網站頻次太高,那麼服務器就會暫時封掉來自這個IP地址的請求。 解決方法:使用time.sleep()來對爬蟲的速度進行限制,建立IP代理池(你可以在網絡上搜索可用的IP代理),一個IP不能用了就換一個用。
  5. 其他。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章