【问题标题】:Deploying scrapy project on heroku在heroku上部署scrapy项目
【发布时间】:2014-04-24 14:37:32
【问题描述】:

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

现在,我有一个烧瓶网络服务,它使用上述两个 JSON 文件来满足用户的请求。

我已经在 heroku 上部署了这个烧瓶网络服务并且工作正常。

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

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

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

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

【问题讨论】:

    标签: python-2.7 heroku scrapy scrapyd


    【解决方案1】:

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

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

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

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

    这有意义吗?

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

    希望有帮助!

    【讨论】:

    • 好的,我明白你在说什么......但在这种情况下,我也必须在本地启动scrapy spider......?我想要一些可以每天自动安排抓取工作的东西......希望你能得到我......你有没有任何教程或示例可以更清楚地说明你在回答中提出的建议......我觉得只有当我弄清楚如何实际去做时,你的回答才可能解决我的一半问题......因为我完全同意你提到的理论......
    • 啊,明白了! Scrapy 实际上有一个可以在服务器上运行的 scrapyd 服务:scrapyd.readthedocs.org/en/latest 这是经常运行蜘蛛的最佳方式 :) 这能回答你的问题吗?
    • 我已经在scrapyd服务器上运行了我的scrapy spider,但是当我必须这样做时,我仍然必须从我的本地机器上触发scrapyd命令......我想自动化启动scrapy spider的过程。 ...那是当我将我的爬虫蜘蛛上传到服务器并第一次启动它时,它应该自行安排并每天在指定时间自行运行
    • 嗯,好的。我对我的项目这样做的方式是我有一个使用 scrapyd API 开始每天运行蜘蛛的 cron 脚本。这是我发现的最好的方法:(
    • 是的,即使我是这样想的......但我的本地机器仍然需要开启它仍然依赖于本地机器来启动......对吧......?
    猜你喜欢
    • 2014-05-05
    • 2021-10-17
    • 2015-05-17
    • 2019-03-17
    • 1970-01-01
    • 2021-05-01
    • 2015-09-29
    • 2016-08-28
    • 1970-01-01
    相关资源
    最近更新 更多