将信息从Scrapy搜寻器连续导出到Django应用程序数据库的最佳方法是什么? [重复]

问题描述 投票:6回答:2

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

现在,我的计划是使用Scrapy的XMLItemExporter(文档here)创建已爬网项目的XML文件,并将这些文件用作XML夹具(文档loaddata)用于Django项目。这似乎是可以的,因为如果两个进程之一搞砸了,它们之间就存在一个文件中介。模块化整个应用程序似乎也不是一个坏主意。

一些问题是:

  • 这些文件可能太大而无法读入Django的here的内存。
  • [当可能存在更好或更简单的解决方案时,例如在直接导出到数据库(在本例中为MySQL)的过程中,我花了太多时间。
  • [似乎没有人在线上写过有关此过程的文章,考虑到Scrapy是插入Django应用程序的绝佳框架,这很奇怪。
  • [没有关于在Django文档上手动创建Django固定装置的权威指南-似乎它更适合于从应用程序本身中转储和重新加载固定装置。

[实验性DjangoItem的存在表明,Scrapy + Django是一个足够受欢迎的选择,因此这里提供了一个好的解决方案。

我将非常感谢在此问题上的任何解决方案,建议或智慧。

django production-environment scrapy django-fixtures
2个回答
1
投票

这个问题已经有点老了,但是我目前也在处理Django + Scrapy的正确集成。我的工作流程如下:如loaddata所述,我已将Scrapy设置为Django管理命令。之后,我只需编写一个Scrapy管道,即可使用Django的QuerySet方法将已抓取的项目保存到Django的数据库中。就这样。我目前正在将SQLite用于数据库,它的工作原理很吸引人。也许这对某人还是有帮助的。


1
投票

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

in this answer

© www.soinside.com 2019 - 2024. All rights reserved.