【问题标题】:How to crawl thousands of pages using scrapy?如何使用scrapy抓取数千个页面?
【发布时间】:2017-04-21 13:02:39
【问题描述】:

我正在考虑抓取数千个页面并需要一个解决方案。每个站点都有自己的 html 代码 - 它们都是独特的站点。没有可用的干净数据馈送或 API。我希望将捕获的数据加载到某种数据库中。

如果可能的话,有什么想法可以用 scrapy 做到这一点吗?

【问题讨论】:

  • 您说“没有可用的干净数据馈送或 API”,仍然想在某处“加载捕获的 数据”。你实际上在寻找什么?如果它似乎不可用,你将如何获得它?..
  • 为什么要专门用scrapy?
  • @JulienNioche,您知道用于此类操作的更好工具吗?
  • @sympi 联系世界上的每个网站所有者,请他们为您构建标准 API。完成后告诉我,我会为你编写 Scrapy 代码。

标签: python scrapy web-crawler


【解决方案1】:

如果我必须从数千个站点中抓取干净的数据,并且每个站点都有自己的布局、结构等,我会实施(并且实际上在某些项目中已经这样做了)以下方法:

  1. Crawler - 一个抓取这些网站及其所有子页面的脚本(这是最简单的部分)并将它们转换为纯文本
  2. NLP 处理 - 对纯文本进行一些基本的 NLP(自然语言)处理(分词、词性 (POS) 标记、命名实体识别 (NER))
  3. 分类 - 一个分类器,可以使用第 2 步中的数据来确定页面是否包含我们正在寻找的数据 - 基于简单规则或 - 如果需要 - 使用机器学习。那些被怀疑包含任何可用数据的页面将被放入下一步:
  4. 提取 - 一种基于语法、统计或机器学习的提取器,它使用 POS 标记和 NER 标记(以及任何其他特定领域的因素)来提取我们正在寻找的数据
  5. 清理 - 对在步骤 4 中创建的重复记录进行一些基本匹配,也许还需要丢弃在步骤 2 到 4 中置信度得分较低的记录。

这当然远远超出了构建一个scrapy scraper 的范围,还需要NLP 和机器学习方面的深厚知识和经验。

您也不能指望通过这种方法获得接近 100% 准确的结果。根据算法的调整和训练方式,这样的系统要么会跳过一些有效数据(假阴性),要么会选择实际上没有任何数据的数据(假阳性)......或者两者兼而有之(假阳性和假阴性)。

但我希望我的回答能帮助你更好地了解。

【讨论】:

  • 您好,第 1 步的架构应该如何?你能举个例子吗?目前,我们正在使用 CralwerRunner 为每个 url 创建多个蜘蛛。但是不确定这是否是正确的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-17
相关资源
最近更新 更多