【问题标题】:How can I find the rate of safely scraping or crawling a website without getting blocked?如何在不被阻止的情况下找到安全抓取或抓取网站的速度?
【发布时间】:2015-07-06 07:01:58
【问题描述】:

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

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

【问题讨论】:

    标签: web-scraping scrapy rate-limiting


    【解决方案1】:

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

    所以我建议尝试和错误并在你的抓取中添加一些暂停,不要让 Scrapy 运行太快而不会被阻塞(或者使用自定义抓取器,你可以将抓取速度限制在你的速度而不是 Scrapy )。

    【讨论】:

      【解决方案2】:

      我建议你一个简单的 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 分钟)等等。

      如果尺寸发生剧烈变化(减小),则表明您有刮擦阻塞的迹象。这将是一个近似的阻塞刮擦率。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-22
        • 1970-01-01
        • 2015-01-27
        • 1970-01-01
        • 1970-01-01
        • 2020-07-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多