[Python] ウェブサイトから必要なデータだけ取得する「スクレイピング」を BeautifulSoup でやる方法

Tue, January 17, 2012 - 3 min read

Python でウェブページから必要なデータだけ取得する方法をご紹介します。

Python

この ”ウェブサイトから必要なデータだけ取得する” ことを「スクレイピング」と呼びます。

「スクレイピング」 = ウェブサイトのデータを必要な部分だけ抽出して利用すること

を頭に入れておけば、あとは「Python スクレイピング」で検索すればたくさん参考になる記事が出てきます。

早速、下記のサイトを参考にしてやってみました。

BeautifulSoup という Python のライブラリを使えば簡単にできるみたいですね。すごい。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib2
from BeautifulSoup import BeautifulSoup

url = "http://www.yahoo.co.jp"
htmlfp = urllib2.urlopen(url)
html = htmlfp.read().decode("utf-8", "replace")
htmlfp.close()

soup = BeautifulSoup(html)
for link in soup.findAll("a"):
  print link

このプログラムでは、Yahoo! JAPAN (http://www.yahoo.co.jp/) から <a href=“http://www.hogehoge.com/&quot;&gt;〜〜〜&lt;/a> などのリンクだけを取得して print しています。

実行結果は以下の通りです。(一部抜粋)

ヘルプ
天気、交通情報ほか、連休お役立ち情報
「あいのり2」バングラデシュ編ついに完結
東日本大震災 チャリティーオークション
ショッピング
オークション
旅行、出張
ニュース
天気
スポーツ
ファイナンス
テレビ
地図
路線
グルメ
.
. (途中省略)
.
会社概要
投資家情報
社会的責任
企業行動憲章
広告掲載について
採用情報
利用規約
セキュリティーの考え方
プライバシーポリシー
免責事項

以上です。