python-2.7 - 在heroku上部署scrapy项目

标签 python-2.7 heroku scrapy scrapyd

我有一个 scrapy 蜘蛛项目,它会废弃一些网站并获取其上的数据。我的蜘蛛生成两个 JSON 文件,其中存储了抓取的所有数据。

现在,我有一个 Flask Web 服务,它使用上面提到的两个 JSON 文件来满足用户的请求。

我已经在 Heroku 上部署了这个 Flask Web 服务并且工作正常。

我的问题是我每天在本地计算机上运行 scrapy 蜘蛛,然后手动更新 heroku 上的两个 JSON 文件。

我想自动化这个过程,scrapy 项目应该每天运行,并且生成的 JSON 文件应该自动更新。

我在这里找到的解决方案是,如果 scrapy Spider 和 Web 服务部署为单个项目,它将按我想要的方式工作......但我不确定是否可以完成。

我搜索了有关部署 scrapy 项目的主题,找到了 scrapyd 甚至 scrapy-heroku,但我不知道它们将如何提供帮助,或者我应该如何使用它们来满足我的特定要求。

最佳答案

我以前也遇到过类似的情况。

您需要执行以下操作:创建一个 Scrapy pipeline,而不是使用 Scrapy 在本地使用抓取的数据生成 JSON 文件。并将抓取的数据存储到数据库中( Heroku Postgres 或类似的东西)。

然后,当您运行 Scrapy 时,它会抓取您的网站,并将信息存储到 Postgres 中。

现在,您应该将 Flask 项目单独部署在 Heroku 上。不要让它从本地 JSON 文件读取,而是使用 Flask-SQLAlchemy通过 Heroku Postgres 数据库与抓取的数据进行交互。

这有意义吗?

这通常是处理抓取内容的最佳方式——默认的 Scrapy JSON 项目管道非常适合测试,但通常不是您想要的重要数据。

希望有帮助!

关于python-2.7 - 在heroku上部署scrapy项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23272075/

相关文章:

html - XPath - 在两个 DIV 之间选择文本(),该 DIV 由其中匹配的文本标识

python-3.x - 如何让我的脚本选择正确的 python 解释器?

python - 基于插件的方法是否被认为是 PyQt 中 GUI 应用程序开发的良好实践?

ruby-on-rails - 如何将更改从 Bitbucket 推送到 Heroku

python - Scrapy 安装在 Ubuntu : pkg_resources. DistributionNotFound: attrs

python - 单个项目中的 django/python 的多个版本

Python - 如何添加初始 MP3 属性

excel - Openpyxl 读取公式结果(Python 2.7)

javascript - Angular 2 环境变量 - 设置基本身份验证密码

ruby-on-rails - 不使用 Heroku 上的 Resque 进行后台作业