LoginSignup
9
12

More than 3 years have passed since last update.

scrapyでスクレイピング。spiderをscrapinghubで管理

Posted at

スクレイピングの管理

みなさん、スクレイピングの管理はどのようにしていますか。
自分でサーバで立ち上げたり面倒な作業がいらない方法をご紹介します。

scrapyでスクレイピングする部分を作成する。

プロジェクトの作成

pip install scrapy
scrapy startproject yahoo_scrapy
cd yahoo_scrapy
scrapy genspider yahoo yahoo.co.jp

spiderの作成(スクレイピング部分)

cd yahoo_scrapy
scrapy genspider yahoo yahoo.co.jp
yahoo_scrapy/items.py
class YahooScrapyItem(scrapy.Item):
    link = scrapy.Field()


yahoo_scrapy/spiders/yahoo.py
# -*- coding: utf-8 -*-
import scrapy

from ..items import YahooScrapyItem


class YahooSpider(scrapy.Spider):
    name = 'yahoo'
    allowed_domains = ['yahoo.co.jp']
    start_urls = ['http://yahoo.co.jp/']

    def parse(self, response):
        for sel in response.css("a"):
            article = YahooScrapyItem()
            article['link'] = sel.css('a::attr(href)').extract_first()
            yield article


ローカルでの動作確認

scrapy crawl yahoo

標準出力に、結果が出力されます。

scrapinghub

https://app.scrapinghub.com
こちらのほうに登録してください。

ログインして、プロジェクトを作成します。
yahooをスクレイピングしようかと思うので、yahooプロジェクトにします。
スクリーンショット 2019-09-30 21.06.53.png

Code & Deploys で作成したレポジトリと接続します。

スクリーンショット 2019-10-01 21.22.43.png

接続完了後に、Gitのほうを、コミットしてプッシュしちゃってください。

SPIDERSメニューのDashboardをみると、yahooのspiderが登録されます。
スクリーンショット 2019-10-01 21.27.25.png

RUNボタンを押して動かしてみましょう。
スクリーンショット 2019-10-01 21.28.28.png

終了するとこんな感じで、結果が出ます。
スクリーンショット 2019-10-01 21.29.49.png

さらにItemsを押すと、1つずつ見れます。
EXPORTからCSVやJSONなどに出力できます。便利です。
このScrapinghubには、apiもあり、結果がすぐAPIの結果して提供されます。
そちらも時間があれば書こうかと思います。

スクリーンショット 2019-10-01 21.31.16.png

9
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
12