我在抓取网站的单个页面时使用了Beautiful Soup并取得了巨大成功,但是我有一个新项目,我必须检查一个大型网站列表,看看它们是否包含我的网站的提及或链接。因此,我需要检查每个站点的整个站点。
使用BS我还不知道如何告诉我的刮刀它是用网站完成的,所以我达到了递归限制。这是Scrapy开箱即用的东西吗?
答案 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}}