2011-06-06 60 views
3

我是新来抓取,最近我意识到,线程可能是快速抓取网站的方法。在我开始讨论这个问题之前,我认为确定这个问题是否会最终导致我扼杀是很明智的。所以问题是,如果我重写我的程序以使用线程更快地抓取,是否会违反大多数网站的robots.txt?线程是否违反了robots.txt?

回答

1

取决于:如果您的线程拥有自己的单独队列以便进行爬网,并且在任何类型的队列之间没有同步,那么当两个(或更多)线程尝试执行时,最终可能会违反站点的robots.txt快速连续抓取同一网站的网址。当然a well designed crawler不会那样做!

非常“简单”的搜寻器具有某种共享优先级队列,根据各种机器人排除协议对工作进行排队,并且所有线程都会从该队列中抓取要爬网的URL。这种方法存在许多问题,特别是在尝试扩展和爬行整个世界网络时。

更高级的抓取工具可以执行“预算”计算(see the BEAST budget enforcement section),这使得他们可以根据各种标准智能计划抓取:垃圾邮件指标,robots.txt,覆盖率与新鲜度等。预算执行使多线程爬虫更容易快速爬行,礼貌地爬行!

0

他们是无关的。 robots.txt表示您是否被允许访问某些内容。它没有办法说“请只发送一个请求”。

+2

此网站上至少有一条爬行延迟线:http://www.bhphotovideo.com/robots.txt。我认为这是标准。 – 2011-06-06 18:05:36

+1

这里你去:http://en.wikipedia.org/wiki/Robots_exclusion_standard#Crawl-delay_directive – 2011-06-06 18:07:22