2016/05/03

Python Tips:ウェブページの情報をプログラムでまとめて取得したい

今回はウェブページの情報を Python を使って取得する方法をご紹介します。いわゆるスクレイピングについてです。

一般にどんなものが使われているのか把握しきれていませんが、おそらく、 Python でスクレイピングをする場合は大きく次の 2 つのパターンに大別されるかと思います。

1. 軽くスクレイピング: requests + α を使う
2. 本格的にスクレイピング: Scrapy を使う

1. 軽くスクレイピング: requests + α を使う


軽くスクレイピングしたい場合、作業が一回こっきりの場合や手作業の手間を少しだけ省きたいだけの場合は requests を使う方法が多いでしょうか。 requests で HTML を取得し、また別のものを使って HTML 内のデータ抽出を行います。「別のもの」は大体は BeatifulSoup か PyQuery になるかと思います。

- Requests: HTTP for Humans
- Beautiful Soup Documentation
- pyquery: a jquery-like library for python

かつてこちらで紹介記事を書いていました。よろしければ参考にしてみてください。

- ライブラリ:Requests - Life with Python
- ライブラリ:BeautifulSoup - Life with Python
- ライブラリ:PyQuery - Life with Python

2. 本格的にスクレイピング: Scrapy を使う


本格的にスクレイピングする(クローリングなどもする)場合は、 requests などでは少し物足りなくなってきます。その場合に役立つのが Scrapy ライブラリです。

- Scrapy | A Fast and Powerful Scraping and Web Crawling Framework

「フレームワーク」とうたっているとおり、スクレイピング、クローリングのための全部入りツールとなっています。リンクを辿ったり CSV や DB に永続化したりすることを前提に、必要な部分だけを書いてあとはフレームワークに任せる形で利用するようなものです。

・・・

1 のパターンの例として、 WordPress のプラグインリストを取得するコードをご紹介します。

こちらを実行すると、 WordPress の日本語版サイトより人気プラグイン情報が一覧で取得されます。ご参考に。。。



2 のパターンの例はあいにくちょうどいいものが手元にないので、わかりやすく紹介されているページをご紹介しておきます。

- PythonとかScrapyとか使ってクローリングやスクレイピングするノウハウを公開してみる! - orangain flavor
- Python: Scrapy と BeautifulSoup4 を使った快適 Web スクレイピング | CUBE SUGAR STORAGE
- PythonによるWebスクレイピング入門

以上です。

一冊まるまる Python を使ったスクレイピングの方法に関する本が日本語に翻訳されたようですので、興味のある方は手にとってみられるとよいかもしれません。