2

我有一个scrapy spider项目,它会删除一些网站并获取我上面的数据。我的蜘蛛产生两个 JSON 文件,其中存储了所有被抓取的数据。

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

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

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

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

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

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

4

1 回答 1

3

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

以下是您想要做的:与其使用 Scrapy 使用抓取的数据在本地生成 JSON 文件,不如创建一个Scrapy 管道并将抓取的数据存储到数据库中(Heroku Postgres或类似的东西)。

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

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

那有意义吗?

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

希望有帮助!

于 2014-04-24T16:31:15.193 回答