2017-06-13 72 views
0

我一直在尋找如何自動化和寫入文件到Scrapy(CSV)的Excel。到目前爲止,唯一可行的命令是繁瑣的,手動的方法:Scrapy |自動化和寫入Excel

scrapy crawl myscript -o myscript.csv -t csv 

我希望能夠每一種格式化成更收集「行」的格式。此外,有什麼辦法可以使刮板自動化?理想情況下,我希望代碼每天運行一次,並且希望能夠在有關我的更新的更新時通知我自己。隨着更新是一個相關的職位。

我的蜘蛛正在發揮作用,這裏是代碼:

import scrapy 

from scrapy.spiders import XMLFeedSpider 
from YahooScrape.items import YahooScrapeItem 

class Spider(XMLFeedSpider): 
    name = "Test" 
    allowed_domains = ["yahoo.com"] 
    start_urls = ('https://feeds.finance.yahoo.com/rss/2.0/headline?s=GOOGL',) 
    itertag = 'item' 

    def parse_node(self, response, node): 
     item = {} 
     item['title'] = node.xpath('title/text()',).extract_first() 
     item['pubDate'] = node.xpath('link/pubDate/text()').extract_first() 
     item['link'] = node.xpath('link/text()').extract_first() 
     item['description'] = node.xpath('description/text()').extract_first() 
     return item 

我知道,要進一步出口/整理我的刮刀,我必須編輯管道設置(至少根據大多數我讀過的文章)。

下面是我的pipelines.py代碼:

class YahooscrapePipeline(object): 
    def process_item(self, item, spider): 
     return item 

我如何可以將其設置這樣我就可以執行的代碼,它會自動地寫代碼?

更新:我正在使用ScrapingHubs API,它使用shub-module來運行我的蜘蛛。它非常方便,而且易於使用。

+0

您可以在settings.py中啓用管道並使用它。也可以使用啓動CSV Feed Exporter – Verz1Lka

回答

0

Scrapy本身不處理定期執行或調度。它完全脫離了scrapy的範圍。恐怕答案不會像你想的那麼簡單,而是需要的。

你能做什麼是: 使用celerybeat允許基於crontab進度計劃進行調度。 Running Celery tasks periodically (without Django)http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html應該讓你開始。

我建議的另一件事是,你在scrapyd中託管你的蜘蛛。這會買你日誌保留和一個不錯的JSON API使用時,你會更高級:)。

堆棧溢出鏈接爲您提供運行芹菜沒有Django的示例代碼(因爲很多例子假設Django :))。記住要運行節拍調度程序,而不是直接執行任務 - 正如鏈接中指出的那樣。

+0

瞭解。代碼是否可以堆疊在我的蜘蛛中,或者我可以如何實現Celery?這似乎有點令人生畏 – Friezan

+0

這是我之前看到它直接調用你的蜘蛛完成的:https://stackoverflow.com/questions/22116493/run-a-scrapy-spider-in-a-celery-task – RabidCicada

+0

我會採取的方式是實際使用scrapyd和scrapyd-client。通過運行'scrapyd-deploy rabidtest -p rabidhire'將你的蜘蛛寄存在scrapyd中然後使用一個scrapyd-client的api從芹菜任務中運行你的蜘蛛。無需解決反應堆問題,並且解耦更好。 – RabidCicada

-2

至於你提到組織座位輸出的問題,請注意你提到你熟悉如何使用出口商的事實,但同意創建一個自定義的CSV導出器,然後必須註冊字段在您的設置中導出。它們在您的設置中顯示的順序確實將它們寫入CSV文件的順序。

如果我誤解了問題的這一部分,而不是水平的話,你的意思是垂直對齊你的項目,如果你沒有很多字段......做得很對,快速入侵添加正則表達式\ n在新行中你的蜘蛛項目化...可能必須先找到項目2然後添加新行或ORT的標籤,然後你可以添加項目與你必須找到...我給一個例子,但這是存在這樣一件很難做的事情......我會盡全力幫你解決。

至於安排一隻蜘蛛.. 就像他們提到的那樣,有Scrapyd,我與scrapymon一起使用...但是要警告,截至此刻,Scrappyd有一些兼容性問題,所以請記住,強迫自己爲您的scrapyd項目創建一個虛擬環境。 有一個巨大的學習曲線來獲取你想要的偉德。

與芹菜使用Django是byfar TOP解決方案,當你的刮擦變得嚴重....高學習曲線現在你必須處理服務器的東西,甚至更多的痛苦屁股它不是本地服務器,但老人。 ..交叉的速度,然後自定義整合或改變一個基於網絡的gui.If你不想混亂的一切。我做了很長一段時間,使用scrapinghub ...得到他們的API ...你可以捲曲或使用他們提供的python模塊...和cron schedlue你的蜘蛛,因爲你認爲適合你從PC ...刮遠程完成,所以你保持資源的力量。