我有一个scrapy蜘蛛项目,它会废弃一些网站上的数据。我的蜘蛛产生了两个JSON文件,其中存储了所有被抓取的数据。
现在,我有一个烧瓶Web服务,它使用上面说的两个JSON文件来满足用户的请求。
我已经在heroku上部署了这个烧瓶网络服务并且工作正常。
我的问题是我每天在本地计算机上运行scrapy spider,然后手动更新heroku上的两个JSON文件。
我想自动化这个过程,scrapy项目应该每天运行,产生的JSON文件应该自动更新。
我在这里找到的解决方案是,如果将scrapy spider和web服务部署为单个项目,它将按我的意愿工作......但我不确定是否可以完成。
我搜索了有关部署scrapy项目的主题,我发现了scrapyd甚至scrapy-heroku,但我对他们将如何帮助或我应该如何使用它们来满足我的特定要求一无所知。
答案 0 :(得分:2)
我之前一直处于类似情况。
以下是您要执行的操作:而不是使用Scrapy在本地使用已删除的数据生成JSON文件 - 创建Scrapy pipeline并将已删除的数据存储到数据库中(Heroku Postgres,或类似的东西)。
然后,当您运行Scrapy时,它会刮掉您的网站,并将信息存储到Postgres。
现在,您应该在Heroku上单独部署Flask项目。不要让它从本地JSON文件读取,而是让它使用Flask-SQLAlchemy通过Heroku Postgres数据库与抓取的数据进行交互。
这有意义吗?
这通常是处理抓取内容的最佳方式 - 默认的Scrapy JSON项目管道非常适合测试,但通常不是您想要的严肃数据。
希望有所帮助!