【问题标题】:Number of hits while crawling a website...?抓取网站时的点击次数...?
【发布时间】:2014-12-30 17:59:47
【问题描述】:

我正在创建一个简单的应用程序,我必须在其中跟踪页面中的链接等等......因此构建了一个非常基本的网络爬虫原型。

当我测试它时,我遇到了robot.txt,它对任何试图爬取其网站的外部爬虫都已达到限制。例如,如果一个网站的 robots.txt 对给定 IP 的命中限制不超过每秒 1 次命中(如 wikipedia.org 的命中),并且如果我以每秒 1 页的速度抓取 Wikipedia 的几页,那么我如何估计在我爬行时会发生多少次点击?

问题:如果我通过python的urllib下载一整页,会占多少点击量?

这是我的示例代码:

import urllib.request
opener = urllib.request.FancyURLopener({})
open_url = opener.open(a)
page = open_url.read()
print page

【问题讨论】:

  • 如果限制为每秒 1 次命中的爬虫运行一分钟,您将抓取的项目少于 60 个(如果每个项目之间的等待时间为一秒,那么处理和延迟将加起来,您将可能达到 55/分钟)。我不清楚你在问什么 - 如果你遇到链接,你将不得不将它们添加到队列中,并以 1/秒的速度处理它们。您是否想知道以这种速度爬取维基百科需要多长时间?
  • 我很抱歉不清楚...我现在已经编辑了我的问题以更具体地说明我在寻找什么...
  • 如果您下载一个页面,那么这是一击即中,除非您的库还加载 Web 资产,如 CSS、JavaScript、字体和图像(我认为您的问题的重点是关于资产加载)。大多数爬虫不获取资产,因为它们不感兴趣。即使他们这样做了,也很难给出一个笼统的答案,因为这取决于资产的数量。
  • 不,我提取的只是原始 html(从视图源代码中看到),而不是脚本和图像等资产...感谢您提供的信息...
  • 没问题。出于兴趣,robots.txt 中是否有用于抓取速度的编码?那是什么样子的,你能给我指一个吗?

标签: python web web-crawler urllib


【解决方案1】:

如果您从带有urllib 的站点下载整个页面,它将被视为一 (1) 次点击。

将页面保存到一个变量中,从现在开始使用这个变量。

此外,我建议您使用requests 而不是urllib。更容易/更好/更强。

链接到documentation of Requests

【讨论】:

  • 我在我的问题中添加了一个示例代码...您能否验证一下您的回复是否保持不变?谢谢...
  • 它保持不变,只要您继续使用page
【解决方案2】:

您可以做的一件事是在两个请求之间设置一个时间间隔,这将解决您的问题,并且还可以防止您被阻止。

【讨论】:

    猜你喜欢
    • 2019-08-21
    • 2016-11-20
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 2019-08-27
    • 1970-01-01
    相关资源
    最近更新 更多