【发布时间】:2011-06-06 17:50:28
【问题描述】:
我是抓取新手,最近我意识到线程可能是快速抓取网站的方法。不过,在我开始破解它之前,我认为确定这是否最终会让我受到限制可能是明智的。所以问题是,如果我重写我的程序以使用线程更快地抓取,这会违反大多数网站的 robots.txt 吗?
【问题讨论】:
标签: multithreading web-scraping robots.txt web-crawler
我是抓取新手,最近我意识到线程可能是快速抓取网站的方法。不过,在我开始破解它之前,我认为确定这是否最终会让我受到限制可能是明智的。所以问题是,如果我重写我的程序以使用线程更快地抓取,这会违反大多数网站的 robots.txt 吗?
【问题讨论】:
标签: multithreading web-scraping robots.txt web-crawler
视情况而定:如果您的线程有自己单独的要抓取的 URL 队列,并且任何类型的队列之间没有同步,那么当两个(或更多)线程尝试抓取时,您最终可能会违反站点的 robots.txt快速连续的同一站点的 URL。当然a well designed crawler 不会那样做!
非常“简单”的爬虫具有某种共享优先级队列,其中工作根据各种机器人排除协议进行排队,所有线程都会从该队列中提取要爬取的 URL。这种方法存在许多问题,尤其是在尝试扩展和抓取整个 World Wild Web 时。
更高级的爬虫执行“预算”计算 (see the BEAST budget enforcement section),这使它们能够根据各种标准智能地安排爬取:垃圾邮件指标、robots.txt、覆盖率与新鲜度等。预算执行使多线程爬虫更容易爬得快,爬得有礼貌!
【讨论】:
它们是无关的。 robots.txt 说明是否允许您访问某些内容。它没有办法说“请一次只发送一个请求”。
【讨论】: