1. 如何優化 python 爬蟲的速度
使用開源的爬蟲庫scrapy,原生支持多線程,還可以設定抓取速率,並發線程數等等參數;除此之外,scrapy對爬蟲提取HTML內容也有良好的支持。
優化方法有,開啟gzip,多線程,對於定向採集可以用正則取代xpath,用pycurl代替urlib。
2. 請教一個問題,怎麼提高 python 爬蟲的爬取效率
一.使用開源的爬蟲庫scrapy,原生支持多線程,還可以設定抓取速率,並發線程數等等參數;除此之外,scrapy對爬蟲提取HTML內容也有良好的支持。 二.優化方法有,開啟gzip,多線程,對於定向採集可以用正則取代xpath,用pycurl代替urlib
3. 如何優化 Python 爬蟲的速度
從以下的五個方面去進行優化測試:
1、cpu瓶頸的話可以通過分布式的方式來解決 更多的結點去處理分發的任務就好了
2、本地帶寬的瓶頸通過雲伺服器解決(一般都有100MB的方案提供) 定時定量的去購買使用可以節約成本(畢竟不是搜索引擎不會一直開著的)
3、目標伺服器的帶寬限制(基於IP的)通過跨區的伺服器解決 雲伺服器提供商有多個機房的 分散節點所在的機房可以緩解問題 有提供動態ip的就更好了
4、目標伺服器的訪問限制,老漁哥提示搜一下<反爬蟲>策略就差不多了解了 根據自己的編程能力來應對 給兩個庫投石問路 SeleniumPhantomJS 對於驗證碼相關的可以考慮購買服務(有外包的, 最高級別是人肉的一定可以搞定, 量要考慮一下價格不菲)真的不建議自己搞。
目標網站系統比較知名的話(discuz)可以網上搜搜 足夠簡單的話可以用opencv(有python綁定的版本而且跨平台) thredshold(二值化)處理顏色, eroded/dilate(腐蝕膨脹)處理噪點, findContours(查找輪廓)處理字元分割,窮舉旋轉和簡單扭曲再匹配字型檔差不多就可以處理2010以前的簡單二維碼了(當然cpu開銷還是很大的)
5、目標伺服器的帶寬上限限制 這么做的話你的爬蟲就成了攻擊了不討論----以下內容常規的爬蟲可能不會涉
4. 如何優化 Python 爬蟲的速度
1.dns cache
2. 多線程
3. 非同步io
5. 如何提高爬蟲效率
提高爬蟲效率的方法
協程。採用協程,讓多個爬蟲一起工作,可以大幅度提高效率。
多進程。使用CPU的多個核,使用幾個核就能提高幾倍。
多線程。將任務分成多個,並發(交替)的執行。
分布式爬蟲。讓多個設備去跑同一個項目,效率也能大幅提升。
打包技術。可以將python文件打包成可執行的exe文件,讓其在後台執行即可。
其他。比如,使用網速好的網路等等。
6. 如何優化 Python 爬蟲的速度
爬蟲下載慢主要原因是阻塞等待發往網站的請求和網站返回
解決的方法是採用非阻塞的epoll模型。
將創建的socket連接句柄和回調函數注冊給操作系統,這樣在單進程和單線程的情況下可以並發大量對頁面的請求。
7. python 爬蟲 解析效率如何提升
提高爬蟲效率的方法
協程。採用協程,讓多個爬蟲一起工作,可以大幅度提高效率。
多進程。使用CPU的多個核,使用幾個核就能提高幾倍。
多線程。將任務分成多個,並發(交替)的執行。
分布式爬蟲。讓多個設備去跑同一個項目,效率也能大幅提升。
打包技術。可以將python文件打包成可執行的exe文件,讓其在後台執行即可。
其他。比如,使用網速好的網路等等。
反爬蟲的措施
限制請求頭,即request header。解決方法:我們可以填寫user-agent聲明自己的身份,有時還要去填寫origin和referer聲明請求的來源。
限制登錄,即不登錄就不能訪問。解決方法:我們可以使用cookies和session的知識去模擬登錄。
復雜的交互,比如設置「驗證碼」來阻攔登錄。這就比較難做,解決方法1:我們用Selenium去手動輸入驗證碼;方法2:我們用一些圖像處理的庫自動識別驗證碼(tesserocr/pytesserart/pillow)。
ip限制。如果這個IP地址,爬取網站頻次太高,那麼伺服器就會暫時封掉來自這個IP地址的請求。 解決方法:使用time.sleep()來對爬蟲的速度進行限制,建立IP代理池或者使用IPIDEA避免IP被封禁。
8. 請教一個問題,怎麼提高 python 爬蟲的爬取效率
考慮用多進程+分布在不同機房的集群。
理由如下:
如果單進程,則瓶頸多出在CPU上。
多進程的話可以高效利用CPU。但是其實多數情況是在網路,所以說更好的解決辦法是用多個機房的多台機器同時跑多進程的爬蟲,這樣減少網路阻塞。
實現的話,用scrapy+rq-queue然後用redis來作隊列就好。
用這個方法爬過douban的幾千萬個頁面