Scrapy是否知道'当它抓取整个网站?

时间:2017-09-12 19:15:43

标签: python web-scraping beautifulsoup scrapy

我在抓取网站的单个页面时使用了Beautiful Soup并取得了巨大成功,但是我有一个新项目,我必须检查一个大型网站列表,看看它们是否包含我的网站的提及或链接。因此,我需要检查每个站点的整个站点。

使用BS我还不知道如何告诉我的刮刀它是用网站完成的,所以我达到了递归限制。这是Scrapy开箱即用的东西吗?

2 个答案:

答案 0 :(得分:2)

Scrapy使用链接关注者遍历网站,直到可用链接列表消失。访问页面后,它将从列表中删除,Scrapy会确保不再访问该链接。

假设所有网站页面都有其他页面上的链接,Scrapy将能够访问网站的每个页面。

我使用Scrapy遍历数千个网站,主要是小型企业,并且没有任何问题。它可以遍历整个网站。

答案 1 :(得分:1)

我很害怕,没有人知道它何时爬过整个网站。例如,你能说当你抓住整个Facebook吗?那是因为动态生成和交叉链接的页面。

设置递归限制是计划边框的唯一方法,之后您将停止移动。但您可以最小化重复页面的数量。您可以使用页面链接或页面文本的CRC作为标识符,并检查它是否唯一。

您可以在if some_id not in set_of_all_page_ids: set_of_all_page_ids.add(some_id) yield scrapy.Request(response.urljoin(next_page_url)) 方法中执行以下操作:

{{1}}