Pythonで簡単なウェブスクレイパーを書く
翻訳校正:石橋啓一郎
PythonのBeautifulSoupを使ってウェブページをスクレイピングしてみよう。
ウェブは畏敬の念を起こさせるほどの情報を持っており、われわれはみな普段はこれにウェブブラウザからアクセスできれば満足している。しかし時には、HTMLのマークアップの細かいことに煩わされずにプログラムからアクセスしたいことがある。
既に何百もの言語で書かれた何千というHTML(あるいはSGML、あるいはXML)の構文解析ライブラリがあるが、この例ではユーザーのためにほとんどすべての仕事をしてくれる、PythonのBeautifulSoupと呼ばれるライブラリを用いる。BeautifulSoupのライブラリはユーザーが思うがままに使える非常に便利なツールで、構文木を検索して修正する機能だけでなく、一般的なWebページによくあるHTMLの誤りを処理することができる。
このライブラリはウェブページからダウンロードできる。また、DebianやUbuntuのソフトウェア配布に使われているapt-getレポジトリなど、いくつかの有名なソフトウェアレポジトリにも置かれている。
ここでは、<p>タグの中に囲まれている、表示されているテキストをすべて出力するウェブスクレイパーを書いてみる。これは非常に単純な実装で、完全に動かない場合もあるが、このライブラリの使い方の例を示すには十分なはずだ。
まず、スクレイピングしたいページのソースを読み出す必要がある。次のコードでは、コマンドラインで指定されたアドレスを使い、その中身をhtmlという変数に読み込む。
import urllib2,sys address = sys.argv[1] html = urllib2.urlopen(address).read()
次に、BeautifulSoupを使って構文木を作る。
from BeautifulSoup import BeautifulSoup soup = BeautifulSoup(html)
この時点で、コードは既にBeautifulSoupライブラリによってきれいにされ、Unicodeに変換されており、soup.prettify()を使えばソースコードのきれいなダンプを出力できる。
- ホワイトペーパー
- 企画特集
今注目の「サジェスト検索」−デモ掲載中
集積度も性能も、業界最高水準のブレードPC
【徹底対談】運用管理ツールの賢い使い方
御社のログ活用しませんか!?
仮想環境を実現するソリューション特集
パンデミック対策特集
セキュリティ&ユーザ事例【SIer Club】
ストレージメディア特設サイト開設
そのストレージで仮想化に対応できますか?
ロリポップ!がリニューアル
インターネット上の悪意を未然に防ぐには?
ESBでIT投資の無駄を劇的に解消する
◆エン・ジャパン厳選求人☆毎週更新◆
SOA、BPM、SaaS −今、企業に必要なこと
中小企業のセキュリティリスクとは?
- ■ストレージ容量50%削減保証■
- サーバー監視・運用のコストを削減するには
- エンタープライズにおけるSUSEの強み
- サービス・ドリヴン・データセンター
- 話題のタグ
Windows 7はLinuxへの切替が簡単:注目の仮想ディスクフォーマット「VHD」
iPhone OS 3.0で変わった「絵文字」
OSSのクラウド基盤「Eucalyptus」を使う(4)--インストール〜ノード構築
俳優経験者が指南する「人前で上手く話すためのティップス10選」
「うるまでるびペイント」登場:絵は上手下手ではなく制作過程に楽しみが
待てば回路の日和あり--「iPhone 3GS」発売、しかし――