欧美xxxx做受视频,免费人成黄页在线观看视频,老师喂我乳我脱她裤子,久久久久亚洲av无码专区体验,免费大黄网站

如何避免爬蟲采集速度出現(xiàn)了ip限制?

b b b

如何避免爬蟲采集速度出現(xiàn)了ip限制?

  大家知道在大數(shù)據(jù)時(shí)代,每天互聯(lián)網(wǎng)上進(jìn)行得最頻繁的一個(gè)操作是用ip代理工具進(jìn)行網(wǎng)絡(luò)爬蟲抓取,爬蟲的速度,并不是越快越好,采集的速度太快,就容易被發(fā)現(xiàn)有可能封號(hào)。那么如何避免這個(gè)問(wèn)題呢?

  通常情況下,在每個(gè)頁(yè)面抓取之間設(shè)定較大的延時(shí)等待以限制最大訪問(wèn)頻率,可以保證既不會(huì)給服務(wù)器造成過(guò)重負(fù)擔(dān),也不會(huì)因訪問(wèn)太頻繁而被服務(wù)器禁止,然而這樣的方法將導(dǎo)致網(wǎng)絡(luò)利用率低,抓取速度慢,對(duì)于大量網(wǎng)頁(yè)的抓取任務(wù)來(lái)說(shuō),往往是無(wú)法忍受的。

 

  一個(gè)簡(jiǎn)化的理想模型,可以很好的說(shuō)明這個(gè)問(wèn)題,假設(shè)某網(wǎng)站允許的最大訪問(wèn)頻率為6頁(yè)/分鐘,于是最小時(shí)間間隔為10s,這個(gè)時(shí)間要通過(guò)很多次重復(fù)試驗(yàn)來(lái)確定。網(wǎng)絡(luò)流暢時(shí)每個(gè)網(wǎng)頁(yè)讀取時(shí)間為0.5s,為了保證不被服務(wù)器屏蔽,至少要等待9.5s的間隔時(shí)間才繼續(xù)抓取下一個(gè)頁(yè)面,這個(gè)9.5s的間隔時(shí)間是固定的,即使網(wǎng)絡(luò)較差時(shí)也要等待這么長(zhǎng)的時(shí)間。網(wǎng)絡(luò)較差時(shí),網(wǎng)頁(yè)讀取時(shí)間為9.5s,再延時(shí)等待9.5s,于是每個(gè)網(wǎng)頁(yè)的讀取時(shí)間變?yōu)?9s,幾乎是網(wǎng)絡(luò)流暢時(shí)的兩倍。而實(shí)際上網(wǎng)絡(luò)較差時(shí)的理想情況下,只需要等待0.5s,這時(shí)便保持和網(wǎng)絡(luò)流暢時(shí)相同的抓取速度,由此可見這種限制最大速度的方法是很低效的。

 

  另外延時(shí)等待時(shí)間對(duì)抓取頻率的影響是很模糊的,延時(shí)1s時(shí)抓取頻率是100頁(yè)/分鐘,那么延時(shí)10s就是10頁(yè)/分鐘嗎?很難確定,尤其是在復(fù)雜的網(wǎng)絡(luò)環(huán)境中。

 

  要改進(jìn)上述方法,一種很自然的解決方案就是:使等待時(shí)間動(dòng)態(tài)變化,即等于最小時(shí)間間隔減去網(wǎng)頁(yè)讀取時(shí)間,這樣就能保證網(wǎng)頁(yè)平均抓取時(shí)間在網(wǎng)絡(luò)流暢和網(wǎng)絡(luò)較差時(shí)都為最小時(shí)間間隔。這種方法對(duì)于單線程的爬蟲訪問(wèn)小規(guī)模網(wǎng)站來(lái)說(shuō)也許可行,但在多線程分布式的爬蟲訪問(wèn)大規(guī)模網(wǎng)站時(shí),整體上的抓取時(shí)間由許多并行的抓取任務(wù)共同決定,并且各種異常情況(頁(yè)面無(wú)效或者連接超時(shí))使得抓取時(shí)間更加不可計(jì)算,這種方法就顯得相當(dāng)笨拙了。

 

  綜合考慮各種因素,顯然我們需要一種模糊的,不需要精確計(jì)算的方法來(lái)控制爬蟲抓取速度,而且這個(gè)速度是很直觀的以頻率(頁(yè)/分鐘)來(lái)表示——PID控制算法就是其中一種。PID控制器控制爬蟲速度的原理簡(jiǎn)單來(lái)說(shuō)就是:速度快了,增加延時(shí)時(shí)間;速度慢了,減小延時(shí)時(shí)間。

 

  最好的方法是使用動(dòng)態(tài)ip海,幫我們解決IP受到限制的問(wèn)題,但我們還是要注意分析出不同網(wǎng)站的反爬機(jī)制。