2017-06-13 3 views
0

私は、Scrapy(CSV)でExcelにファイルを自動化して書き込む方法を探していました。私はより多く集め、「行」形式にこれらのそれぞれをフォーマットすることができるようにしたい治療|オートメーションとExcelへの書き込み

scrapy crawl myscript -o myscript.csv -t csv 

:そしてこれまでのところ、唯一なんとかコマンドが面倒なの、手動の方法です。さらに、スクレーパーを自動化する方法はありますか?理想的には、コードを1日に1回実行したいと思っています。自分の掻き取りに関する更新があったときに自分自身に通知できるようにしたいのです。関連する投稿が更新されています。

私のクモが働いている、とここでのコードは次のとおりです。

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 

私は、コードを実行することができ、それが自動的にコードを記述しますので、私はそれを設定することができますどのように?

更新日:私はスパイダーをホストするためにshub-moduleで実行されるScrapingHubs APIを使用しています。それは非常に便利で使いやすくなっています。

+0

settings.pyでパイプラインを有効にして使用することができます。また、開始CSVフィードエクスポーター – Verz1Lka

答えて

0

治療自体は定期的な実行やスケジューリングを処理しません。それは完全に治療の範囲外です。私は答えがあなたが望むほどシンプルではなく、必要なものであると思います。

できることは次のとおりです。 crontabのスケジュールに基づいてスケジューリングできるようにするには、celerybeatを使用します。 Running Celery tasks periodically (without Django)http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.htmlを起動する必要があります。

私がお勧めするもう一つのことは、あなたがスクラピーであなたのクモをホストしていることです。それはログの保持とあなたがより高度になるときに使用する素敵なjson APIを購入します:)。

スタックオーバーフローリンクは、djangoなしでセロリを実行するためのサンプルコードを提供します(多くの例ではdjangoと仮定しています:))。リンクで指摘されているように、ビートスケジューラを実行し、タスクを直接実行するのは忘れないでください。

+0

を使用することもできます。コードは私のスパイダーに積み重ねられますか、それともどのようにしてセロリを実装できますか?それはちょっと大変なようです – 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ファイルに書き込まれます。

あなたが多くのフィールドを持っていない場合は、水平の代わりに、あなたのアイテムの垂直方向の整列を意味します。正しく行われた、素早くハックあなたのスパイダーのアイテム化...おそらくまず最初にアイテム2を見つけてから新しいラインを追加するか、タブにタブを追加しなければならないでしょうか?そのようなハッキーなこと...私はあなたasinineを惜しまないでしょう。

スパイダーをスケジュールするには.. Scrapydがありますが、私はScrapymonと一緒に使用しています...しかし、この時点でScrappydには互換性の問題があるので注意してください。 scrapydプロジェクト用の仮想環境を作成します。 あなたはそれを望むようにスクラピーを得るために巨大な学習曲線があります..

セロリでDjangoを使用することは、あなたのスクレイピングが深刻になったときのbyfar TOP解決策です。これで、サーバーの処理に手間取る必要がなくなりました。サーバーサーバーではなく、サーバーではなく老人です。 ..十字架の速度とその後のカスタム統合やWebベースのGUIの変更。あなたはすべてを混乱させたくない場合。私が長年行ったことはscrapinghubに使われました...彼らのAPIで習得してください...あなたがカールするか、提供するPythonモジュールを使用することができます。リモートで行われるので、リソースの消費を抑えることができます。