【问题标题】:What's the requests/second standard for scraping websites?抓取网站的请求/第二个标准是什么?
【发布时间】:2010-05-29 22:24:43
【问题描述】:

这是与我的问题最接近的问题,但在 imo 中并没有得到很好的回答:

Web scraping etiquette

我正在寻找#1 的答案:

你应该每秒执行多少请求来抓取?

现在我从链接队列中拉出。每个被抓取的站点都有自己的线程,并在请求之间休眠 1 秒。我要求 gzip 压缩以节省带宽。

有这方面的标准吗?当然,所有大型搜索引擎在这方面都有一些他们遵循的准则。

【问题讨论】:

    标签: screen-scraping


    【解决方案1】:

    wikipedia article on web crawling 有一些关于其他人在做什么的信息:

    Cho[22] 使用 10 秒作为 访问间隔,以及 WIRE 爬虫 [28] 使用 15 秒作为 默认。墨卡托网络爬虫 遵循适应性礼貌政策: 如果下载一个需要 t 秒 来自给定服务器的文档, 爬虫等待 10t 秒之前 下载下一页。[29]莳萝 等。 [30] 使用 1 秒。

    我一般会尝试 5 秒,有点随机,这样看起来不那么可疑。

    【讨论】:

      【解决方案2】:

      对此没有设定标准,这取决于网络抓取导致的负载量。只要您没有明显影响其他用户的网站速度,它应该是可以接受的抓取速度。

      由于网站上的用户数量和负载不断波动,因此最好动态调整抓取速度。

      监控下载每个页面的延迟,如果延迟开始增加,则开始降低抓取速度。本质上,网站的负载/延迟应该与您的抓取速度成反比。

      【讨论】:

        【解决方案3】:

        当我的客户/老板要求我做这样的事情时,我通常会先寻找公共 API,然后再对公共网站进行抓取。同时联系网站所有者或技术联系人并请求允许这样做可以将“停止和停止”信件保持在最低限度。

        【讨论】:

        • 假设不存在api并假设所有者不会响应
        • 在那种情况下,我会让执行抓取的脚本模仿用户。例如,用户通常不会在 3 秒内点击 20 个页面。通常在我的使用中,我会在每个站点每 3 秒保持大约 1 个请求。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-31
        • 1970-01-01
        • 1970-01-01
        • 2021-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多