我需要帮助来定义一个工具的架构,该工具将每天抓取 1000 多个大型网站以获取新的更新。
我打算在这个项目中使用 Scrapy:
- 考虑到 Scrapy 需要为每个网站创建一个项目,我如何处理 1000 多个网站的抓取并在一个项目中使用 Scrapy 存储数据?我尝试添加项目生成器,但这是个好主意吗?
- 如何判断网站是否更新了新内容以便我可以再次抓取它?
谢谢!
请您参考如下方法:
Scrapy 是这个项目的绝佳选择。查看documentation on broad crawls有关抓取许多(数百万)网站的一些具体建议,但只有 1000 个网站,它就不那么重要了。你应该只使用一个项目和一个蜘蛛——不要生成项目!要么不定义 allowed_domains属性,或确保它仅限于当前正在抓取的域集。您可能想要拆分域,以便每个进程只抓取一个子集,从而允许您并行抓取。
您的蜘蛛将需要跟踪当前域内的所有链接,这里是 an example跟踪所有链接的蜘蛛,以防有帮助。我不确定您要对原始 html 进行哪些处理。您可能希望限制每个站点的深度或页面数量(例如 using depth middleware)。
关于重新访问网站,请参阅 delatafetch middleware作为如何处理仅获取新 URL 的示例。也许您可以从它开始并对其进行自定义。
