将信息从 Scrapy 爬虫连续导出到 Django 应用程序数据库的最佳方法是啥? [复制]

Posted

技术标签:

【中文标题】将信息从 Scrapy 爬虫连续导出到 Django 应用程序数据库的最佳方法是啥? [复制]【英文标题】:What is the best way to continuously export information from a Scrapy crawler to a Django application database? [duplicate]将信息从 Scrapy 爬虫连续导出到 Django 应用程序数据库的最佳方法是什么? [复制] 【发布时间】:2011-10-16 06:40:31 【问题描述】:

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

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

一些担忧是:

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

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

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

【问题讨论】:

【参考方案1】:

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

Django-dynamic-scraper documentation

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于将信息从 Scrapy 爬虫连续导出到 Django 应用程序数据库的最佳方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫从入门到放弃(十九)之 Scrapy爬取所有知乎用户信息(下)

Python爬虫从入门到放弃(十八)之 Scrapy爬取所有知乎用户信息(上)

Python爬虫之Scrapy框架系列——项目实战某瓣top250电影信息获取

Python爬虫之Scrapy框架系列——项目实战某瓣top250电影信息获取

你知道在 scrapy 中,可以定制化导出数据格式吗?scrapy 导出器学习

Scrapy -- 从脚本调用scrapy时,如何立即将字典返回给进程,而不是导出到json文件