如何提高爬虫效率
提高爬蟲效率的方法
協程。采用協程,讓多個爬蟲一起工作,可以大幅度提高效率。
多進程。使用CPU的多個核,使用幾個核就能提高幾倍。
多線程。將任務分成多個,并發(交替)的執行。
分布式爬蟲。讓多個設備去跑同一個項目,效率也能大幅提升。
打包技術。可以將python文件打包成可執行的exe文件,讓其在后臺執行即可。
其他。比如,使用網速好的網絡等等。
限制請求頭,即request header。解決方法:我們可以填寫user-agent聲明自己的身份,有時還要去填寫origin和referer聲明請求的來源。
限制登錄,即不登錄就不能訪問。解決方法:我們可以使用cookies和session的知識去模擬登錄。
復雜的交互,比如設置“驗證碼”來阻攔登錄。這就比較難做,解決方法1:我們用Selenium去手動輸入驗證碼;方法2:我們用一些圖像處理的庫自動識別驗證碼(tesserocr/pytesserart/pillow)。
ip限制。如果這個IP地址,爬取網站頻次太高,那么服務器就會暫時封掉來自這個IP地址的請求。 解決方法:使用time.sleep()來對爬蟲的速度進行限制
如何吸引爬蟲的抓取四個方面:第一,頁面的更新度,如果頁面內容經常更新,爬蟲就會更加頻繁地訪問你的頁面,頁面上出現的新鏈接,也自然會被蜘蛛更快地跟蹤,抓取新頁面。
第二,網站和頁面權重,質量高、資格老的網站被認為權重比較高,這種網站上的頁面被爬行的深度也會比較高,所以會有更多內頁被收錄。
第三,首頁點擊距離,一般來說網站上權重最高的是首頁,大部分外部鏈接是指向首頁的,蜘蛛訪問最頻繁的也是首頁。
第四,導入鏈接,無論是外部鏈接還是同一個網站的內部鏈接,要被抓取,就必須有導入鏈接進入頁面,否則根本沒有機會知道頁面的存在。
總結
- 上一篇: 2019 CSS经典面试题(史上最全,持
- 下一篇: Swift4.0 实现底部弹出框