今回はウェブページの情報を Python を使って取得する方法をご紹介します。いわゆるスクレイピングについてです。
一般にどんなものが使われているのか把握しきれていませんが、おそらく、 Python でスクレイピングをする場合は大きく次の 2 つのパターンに大別されるかと思います。
- 軽くスクレイピング: requests + α を使う
- 本格的にスクレイピング: Scrapy を使う
1. 軽くスクレイピング: requests + α を使う
軽くスクレイピングしたい場合、作業が一回こっきりの場合や手作業の手間を少しだけ省きたいだけの場合は requests を使う方法が多いでしょうか。 requests で HTML を取得し、また別のものを使って HTML 内のデータ抽出を行います。「別のもの」は大体は BeatifulSoup か PyQuery になるかと思います。
過去に紹介記事を書いています。よろしければ参考にしてみてください。
- ライブラリ: Requests - Life with Python
- ライブラリ: BeautifulSoup - Life with Python
- ライブラリ: PyQuery - Life with Python
2. 本格的にスクレイピング: Scrapy を使う
本格的にスクレイピングする(クローリングなどもする)場合は、 requests などでは少し物足りなくなってきます。その場合に役立つのが Scrapy ライブラリです。
「フレームワーク」とうたっているとおり、スクレイピング、クローリングのための全部入りツールとなっています。リンクを辿ったり CSV や DB に永続化したりすることを前提に、必要な部分だけを書いてあとはフレームワークに任せる形で利用するようなものです。
・・・
1 のパターンの例として、 WordPress のプラグインリストを取得するコードをご紹介します。
こちらを実行すると、 WordPress の日本語版サイトより人気プラグイン情報が一覧で取得されます。ご参考に。。。
2 のパターンの例はあいにくちょうどいいものが手元にないので、わかりやすく紹介されているページをご紹介しておきます。
以上です。
一冊まるまる Python を使ったスクレイピングの方法に関する本が日本語に翻訳されたようですので、興味のある方は手にとってみられるとよいかもしれません。