【问题标题】:Django + Scrapy multi scrapers architectureDjango + Scrapy 多爬虫架构
【发布时间】:2021-05-05 23:03:21
【问题描述】:

最近我接手了一个 Django 项目,它的一个组件是 Scrapy scrapprs(很多 - 核心功能)。值得补充的是,scrapers 只需每天多次向数据库提供数据,而 django 网络应用程序正在使用这些数据。

__Scraper__s 可以直接访问 Django 模型,但在我看来不是最好的主意(混合职责 - django 应该充当网络应用程序,而不是 scraper,不是吗?) .例如,在这种拆分之后,scrapers 可以在无服务器的情况下运行,从而节省资金并且只在需要时才生成。

我至少将它视为架构中的独立组件。但是,如果我将 scrapers 与 Django 网站分开,那么我也需要在那里填充数据库 - 并且在 Django webapp 或抓取应用程序中更改模型将需要在第二个应用程序中进行调整。

我还没有看到关于拆分这些应用程序的真正文章。

这里有哪些最佳做法?值得拆分吗?您将如何组织部署到云解决方案(例如 AWS)?

谢谢

【问题讨论】:

  • 仅供参考,它是 scrape(和 scrapescrapedscrape)而不是 scrapper

标签: python django web-scraping architecture scrapy


【解决方案1】:

嗯,这是一个很大的讨论,我也有同样的“好问题”。

简答:

我建议你,如果你想分离它,你可以使用不同的方案将逻辑与数据分离。我以前做过,这是一个很好的方法。

长答案:

问题是:

  • 从爬虫收集信息后,您是否对它们进行了处理(聚合、处理或其他任何事情)?

如果答案是,您可以将其分隔为 2 DB。一个带有原始信息,另一个带有处理过的信息(将与 Django 共享)。

如果答案是,我认为没有任何理由将其分开。说到底,Django 只是数据的可视化者。

  • Django 网站正在使用大量存储的数据来实现单一职责,您希望将其与抓取的数据分开吗?

如果答案是,请用架构甚至数据库将其分开。

如果答案是,则可以将其存储在 Django 的同一个 DB 中。最后,重要的数据将是提取的数据。 Django 可能会有一个配置的数据库或其他额外的数据来管理网络,但数据库的很大一部分将是抓取/处理的数据。取决于您将其分开和维护需要多少成本。如果你从头做,我会分开做。

【讨论】:

  • 谢谢 ferran87,这些都是非常好的要点!事实上,有一种数据处理和小型 ML 应用,所以第二个 DB 可能是不错的选择。此外,Django 几乎只使用来自抓取工具的数据 - 所以第二个“是”的答案。
猜你喜欢
  • 2019-06-24
  • 2021-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多