爬蟲的速度會影響目標網站的服務器。 所以,為了不給目標網站造成不必要的損失,爬蟲的速度一定要控制好,不能太快,也不能太慢,沒有耐心,那么如何限制爬蟲速度呢? 我們來看看用IP模擬器代理優化爬蟲速度的問題。
1. 控制爬蟲速度
1) 初始化:設置初始延遲時間 T0 和比例系數 Kp(典型值 -0.05); [ h]
2)目標設定:設置爬蟲速度S,如每分鐘40頁;
3)測量:統計每分鐘n個爬蟲爬取的網頁數,可能是32,也可能是100;
4)Compare:比較n和S的大小;
5) Execute:如果n大于S,則表示速度太快,所以增加延遲; 如果 n 大于 S 如果它很小,則表示太慢,因此減少延遲。
該方案的公式如下:
Tk=Tk-1+Kp*(Sn) (3.1)
其中k=1, 2, 3 。 .. , Tk 是為第 k 次設置的延遲時間。
不要被表達式嚇到了,其實意思就是步驟5)中描述的執行過程:速度太快(Sn小于0,則Kp*(Sn)為正) , 增加延遲時的速度(Tk 大于Tk-1); 速度太慢(Sn大于0,Kp*(Sn)為負),減小延遲(Tk小于Tk-1)。
假設初始延遲時間T0為1.0s,比例系數Kp為-0.05,爬行速度S設置為40頁/分鐘。 如果一個爬蟲爬取的網頁數為n=100,根據公式3.1計算的延遲值為T1=T0+Kp*(Sn)=1.0+(-0.05)*(40-100)=4.0; 下一次可能的測量值n=30,計算出的延遲值T2=4.0-0.05*10=3.5。
合理控制履帶速度非常有必要。 如果爬行速度快,增加延遲時間; 如果履帶速度較慢,則減少延遲時間。
二、提高爬坡蠕蟲速度
首先要確定當前的瓶頸在哪里,網絡io,磁盤io,還是cpu。 只有這樣,才能詳細分析具體問題。
如果編程能力是瓶頸,添加多線程特性是最劃算的,而且不需要太多開發時間。 不過后續的問題可能比較多,幾行代碼也解決不了。
分布式解決cpu瓶頸,更多節點可以處理分布式任務。
云服務器解決本地帶寬瓶頸(一般100MB計劃提供),定期定量購買可以節省成本(畢竟搜索引擎不常開),目標服務器帶寬限制 (基于IP)由跨區域服務器解決。 云服務器提供商有多個機房。 分布式節點所在的機房可以緩解這個問題。 最好提供動態IP。
以上介紹了控制爬行速度和提高爬行速度的方法,僅供參考! 建議在抓取數據的時候注意不要給目標網站施加太大的壓力。 在爬取過程中,如果遇到IP限制問題,可以使用代理IP突破限制,提高采集速度。 使用代理IP,選擇IP模擬器代理,千萬IP池滿足爬蟲需求。