[Python] ウェブサイトから必要なデータだけ取得する「スクレイピング」を BeautifulSoup でやる方法
- 2012 1/17
- カテゴリー : Python
- BeautifulSoup . スクレイピング
- コメントを書く
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/">〜〜〜</a> などのリンクだけを取得して print しています。
実行結果は以下の通りです。(一部抜粋)
<a href="r/mht"><nobr>ヘルプ</nobr></a> <a href="s/92091">天気、交通情報ほか、連休お役立ち情報</a> <a href="s/92192">「あいのり2」バングラデシュ編ついに完結</a> <a href="s/92366">東日本大震災 チャリティーオークション</a> <a href="r/c1">ショッピング</a> <a href="r/c2">オークション</a> <a href="r/c5">旅行、出張</a> <a href="r/c12">ニュース</a> <a href="r/c13">天気</a> <a href="r/c14">スポーツ</a> <a href="r/c15">ファイナンス</a> <a href="r/c25">テレビ</a> <a href="r/c33">地図</a> <a href="r/c34">路線</a> <a href="r/c41">グルメ</a> . . (途中省略) . <a href="r/fin">会社概要</a> <a href="r/fiv">投資家情報</a> <a href="r/fcsr">社会的責任</a> <a href="r/fcgi">企業行動憲章</a> <a href="r/fad">広告掲載について</a> <a href="r/fhr">採用情報</a> <a href="r/ftm">利用規約</a> <a href="r/fsec">セキュリティーの考え方</a> <a href="r/fpv">プライバシーポリシー</a> <a href="r/fdi">免責事項</a> |
以上です。