2014-04-24 47 views
2

我有一个scrapy蜘蛛项目,它将一些网站剪下来,并把它提交给我。我的蜘蛛产生两个JSON文件,其中存储所有被刮取的数据。在heroku上部署scrapy项目

现在,我已经使用这个上面所述的两个JSON文件,以满足用户要求的烧瓶中的Web服务。

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

我在这里的问题是,我在我的本地机器上运行scrapy蜘蛛日常然后手动更新在Heroku两个JSON文件。

我想这个过程自动化是scrapy项目应日常运行和JSON文件产生都应自动更新。

我发现这里有什么解决办法是,如果scrapy蜘蛛和Web服务部署为单个项目,我想它会工作....但我不知道,如果是可以做到的。

我已经搜索了有关部署scrapy项目的主题,我发现了scrapyd甚至是scrapy-heroku,但我对他们将如何帮助或者我应该如何使用它们来满足我的特定要求毫无头绪。

回答

2

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

这里是你想做的事:而不是使用Scrapy与刮下数据本地生成JSON文件 - 创建一个Scrapy pipeline和你刮数据存储到数据库中,而不是(Heroku Postgres,或类似的东西)。

然后,当你运行Scrapy,它会刮去你的网站(S),并且将信息存储到Postgres的。

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

这有道理吗?

这通常是处理刮东西的最佳方式 - 默认Scrapy JSON项目管道是伟大的试验,但通常不是你想要什么严重的数据。

希望有帮助!

+0

好吧,我明白你在说什么......但仍然在这种情况下,我也将不得不在本地启动scrapy spider .. ..?我希望能够每天自动安排拼抢工作......希望你能找到我......并且您是否有任何教程或示例能够更好地阐明您在答案中提出的建议......我感觉只有当我找出如何切实做到这一点时,你的答案才能解决我的一半问题......因为我完全同意你所提到的理论...... –

+0

啊,知道了! Scrapy实际上有一个你可以在服务器上运行的scrapyd服务:http://scrapyd.readthedocs.org/en/latest/这是每隔一段时间运行一次蜘蛛的最佳方式:)这是否回答你的问题? – rdegges

+0

我已经在scrapyd服务器上运行了我的scrapy蜘蛛,但仍然必须从本地机器启动我的本地机器的scrapyd命令....我想自动化启动scrapy蜘蛛的过程....那是当我一旦上传我的scrapy蜘蛛在服务器上,并启动它第一次它应该安排自己并在指定的时间每天自行运行 –