2014-04-24 122 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蜘蛛在服務器上,並啓動它第一次它應該安排自己並在指定的時間每天自行運行 –