6

我正在尝试构建一个功能类似于商店的 Django 应用程序。项目是从互联网上抓取的,并随着时间的推移(比如每隔几天)不断更新 Django 项目数据库。我正在使用 Scrapy 框架执行抓取,虽然有一个实验性的DjangoItem 功能,但我宁愿远离它,因为它不稳定。

现在,我的计划是使用 Scrapy XMLItemExporter此处的文档)创建已爬取项目的 XML 文件,并将这些文件作为 XML 固定装置(此处的文档)使用loaddata到 Django 项目中。这似乎没问题,因为如果两个进程之一搞砸了,它们之间就有一个文件中介。将应用程序作为一个整体模块化似乎也不是一个坏主意。

一些担忧是:

  • 这些文件可能太大而无法读入 Django 的loaddata.
  • 当可能有更好或更简单的解决方案时,我在这方面花费了太多时间,例如直接导出到数据库,在这种情况下是 MySQL。
  • 似乎没有人在网上写过这个过程,考虑到 Scrapy 在我看来是一个可以插入 Django 应用程序的优秀框架,这很奇怪。
  • 在 Django 的文档上没有手动创建 Django 固定装置的明确指南 - 似乎它更倾向于从应用程序本身转储和重新加载固定装置。

实验性 DjangoItem 的存在表明 Scrapy + Django 是一个足够流行的选择,因为这里有一个很好的解决方案。

我将非常感谢有关此问题的任何解决方案、建议或智慧。

4

2 回答 2

1

您可以使用 django-dynamic-scraper 创建和管理 Scrapy 刮板,并轻松访问 Django 模型。到目前为止,我还没有遇到任何 Scrapy 无法解决的问题。

Django-dynamic-scraper 文档

于 2013-01-22T23:19:36.303 回答
1

这个问题已经有点老了,但我目前也在处理 Django + Scrapy 的正确集成。我的工作流程如下:我已将 Scrapy 设置为 Django 管理命令,如本答案中所述。之后,我简单地编写了一个 Scrapy 管道,它使用 Django 的 QuerySet 方法将抓取的项目保存到 Django 的数据库中。就这样。我目前正在使用 SQLite 作为数据库,它就像一个魅力。也许这对某人仍然有帮助。

于 2012-08-17T20:59:52.440 回答