へっぽこびんぼう野郎のnewbie日記

けろけーろ(´・ω・`)!

ScrapyというやつでWebスクレイピングして、ポケモン一覧をポケモンwikiから取得してみた

はじめに

ScrapyはPythonのモジュールで、Webスクレイピングできるやつ。
pypiにあるので、pipが入っていればpip install scrapyでインストールできる。

ないときびしい前提知識

 

これがこんな感じに

ポケモン一覧 - ポケモンWiki


CreateTestData/poke.txt at master · harukaeru/CreateTestData · GitHub

一覧で長いため、ここに載せたくない。
データのダブリもありますが(ミノマダムのとことか)、まぁとりあえず取得しただけなんで……

インストール方法

pip install scrapy

ちょっと長い。あとWarning吐きまくる。大丈夫なのだろうか…

使い方

チュートリアルというか『ぱっと見で使おう的なやつ』にTorrentの話題が出てきて焦る。
大丈夫なのだろうか…
Scrapy at a glance — Scrapy 0.24.5 documentation

チュートリアルは↑よりも
Scrapy Tutorial — Scrapy 0.24.5 documentation
の方がオススメできる。

ざざっと

とりあえず

$ scrapy startproject hogehoge

と書いて、テンプレートを作る。Djangoの$ django-admin.py startproject hogehogeみたいなもの。

その後
items.pyにスクレイピングで取ってくる情報を書いて
spidersディレクトリの下にsukureiping_suru.pyのようなファイルを作り、その中にどうスクレイピングするのかを書いて

$ scrapy crawl sukureiping_suru -o hoge.json

と書いて、ファイル出力するようだ。

別にitems.pyとかいらねーよという人は、sukureiping_suru.pyの中でファイル出力してもいい。
json形式以外にもxml形式でもだせるらしいよ。

※ちゃんとUTF-8とかで出力しないとおこられるよ

じゃあどうスクレイピングするのか

XPathとかいうセレクタの方法を使ってやっているようだ。
ここがいいサイトっぽいかんじだ。
XPath Tutorial

こっちはハードな道
XML Path Language (XPath)

ぶっちゃけほとんどCSSセレクタのようなものなのでむずかしくない(文法違うだけ)
CSSを取得するときは、css()とかいうメソッドがあるらしいので便利そう。

Webスクレイピングって何が便利なの

同じ規則でひたすらたくさんあるデータは全部とってこれちゃうので便利

例えばtwitterでプロフにPythonとかRubyって書いてある人のホームページのURL取得して
その先で『pythonだけじゃなくてLispもやれよ( 'д'⊂彡☆))Д´)』ってコメントを残すことも可能そう

スクレイピングってあれだね。色んな書き方になってるグラフから条件に合ったノードを取得してるわけだね。すごい。
つまり、ヤリチンはスクレイピングしていることが判明した!!!!

response.xpath('//kawaii').extract()

おわりに

Warningのでかたがやゔぁすぎるので実はあんまり信用していない
Python3.X系では使えないっぽい。つら。
 ←Frequently Asked Questions — Scrapy 0.24.5 documentation