如何在不被阻止的情况下找到安全抓取或抓取网站的速度?

时间:2015-07-06 07:01:58

标签: web-scraping scrapy rate-limiting

我将rate定义为每单位时间的HTTP请求数。

我不知道我被阻止的时间(例如每天1000个请求)。我正在尝试为任何网址确定此费率。我怎么能做到这一点?我可以采用什么策略?

2 个答案:

答案 0 :(得分:0)

这取决于您正在抓取的网站。有时它会在某处记录,但很可能不会。在这种情况下,API会更好。

因此,我建议您尝试进行试错,并为您的抓取添加一些停顿,并且不要让Scrapy运行得太快以至于不会被阻挡(或使用自定义刮刀,您可以将刮削速度限制在您的步伐不是Scrapy)。

答案 1 :(得分:0)

我建议你一个简单的PHP脚本:

<?php
$url='<site url>';
$page = file_get_contents($url);
mail('<your email>',  "scrape {$url} response size = " . strlen($page) , ''); 
?>

将脚本设置为cron以使用一天的初始最低费率运行。说,每20分钟一次。在一天内,它将运行24 * 60/20 = 72(次)。

邮件将每隔20分钟发送给您,其中包含脚本抓取的网站大小。第二天你经常运行它(每15分钟一次),依此类推。

如果尺寸急剧变化(减少),你就会有刮擦阻塞的迹象。这将是近似的阻塞率。