Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web scraping 如何才能找到安全地抓取或爬行网站而不被阻止的速率?_Web Scraping_Scrapy_Rate Limiting - Fatal编程技术网

Web scraping 如何才能找到安全地抓取或爬行网站而不被阻止的速率?

Web scraping 如何才能找到安全地抓取或爬行网站而不被阻止的速率?,web-scraping,scrapy,rate-limiting,Web Scraping,Scrapy,Rate Limiting,我将速率定义为单位时间内HTTP请求的数量 我不知道在什么时间之后我会被阻止,例如每天1000个请求。我正在尝试确定任何url的速率。我怎样才能做到这一点?我可以采用什么策略?这取决于您要删除的站点。有时它被记录在某个地方,但很可能没有。在这种情况下,API更好 因此,我建议您尝试一下出错的方法,并在您的抓取过程中添加一些暂停,不要让Scrapy运行得太快,以免被阻止,或者使用自定义的抓取器,您可以将抓取速度限制为您的速度而不是Scrapy。我建议您使用一个简单的php脚本: <?php

我将速率定义为单位时间内HTTP请求的数量


我不知道在什么时间之后我会被阻止,例如每天1000个请求。我正在尝试确定任何url的速率。我怎样才能做到这一点?我可以采用什么策略?

这取决于您要删除的站点。有时它被记录在某个地方,但很可能没有。在这种情况下,API更好


因此,我建议您尝试一下出错的方法,并在您的抓取过程中添加一些暂停,不要让Scrapy运行得太快,以免被阻止,或者使用自定义的抓取器,您可以将抓取速度限制为您的速度而不是Scrapy。

我建议您使用一个简单的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分钟运行一次,以此类推

如果尺寸急剧变小,你就会有刮擦阻塞的迹象。这将是一个近似的堵塞刮擦率