【发布时间】: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