昨日の続きでScrapyをさわる。
ちなみに、昨日Linux環境にインストールする時は苦労したが、 今日Windows環境にpipでScrapyをインストールしてみたら、 何ひとつひっかからずにインストールが完了した。
ともあれ、ようやくScrapyをインストールできたので、 試しにWebサイトのページからデータを抽出してみる。
毎週楽しみにしているトラベリックスの番組内容一覧を取得してみた。 ここは履歴のみ掲載されているけど、同じようなスクリプトを使って 次週の放送予定を取得する、みたいなこともできそう。
放送回、放送日、タイトル、詳細ページのURLを取得して出力する。
travelix_spider.py
import scrapy class TravelixSpider(scrapy.Spider): name = 'travelix_spider' start_urls = ['http://www.bs4.jp/document/travelix3/onair/index.html'] def parse(self, response): for table in response.xpath('//table'): row = table.xpath('tr/td') if len(row) == 4: num = row[0].xpath('text()').extract_first() date = row[1].xpath('text()').extract_first() title_link = row[2].xpath('a') url = title_link.xpath('@href').extract_first() title = title_link.xpath('text()').extract_first() print 'num: %s, date: %s, url: %s, title: %s' % (num, date, url, title,)
実行は、scrapyコマンドを使用する。
scrapy runspider travelix_spider.py
ドキュメントをちゃんと読んだらもう少し洗練された コードにできるかな?
スクレイピングを使いこなせば APIで提供されていないデータや、HTMLベースでしか存在しないデータを データベース化する役に立つので、データ収集・抽出ツールとして 押さえておく価値はありそうです。
実践 Webスクレイピング&クローリング-オープンデータ時代の収集・整形テクニック
- 作者: nezuq,東京スクラッパー(協力)
- 出版社/メーカー: マイナビ
- 発売日: 2015/08/28
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る