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()を使えばソースコードのきれいなダンプを出力できる。
- 今日のトップ記事
- 昨日
- 5日前
- 6日前
- 7日前
- ホワイトペーパー
- 話題のタグ
「Google Chrome」の拡張機能、開発者からのアップロード受付を開始
IMAPでGmailを受信、最も手っ取り早いのは?Windows 7、Ubuntu 9.10、Snow Leopardのメーラー比較
Snow LeopardではNTFSをサポート--その源流を訪ねる(2)
MS運営のオープンソース開発プロジェクト支援サイト「CodePlex」を探検する(2)
Snow LeopardではNTFSをサポート--その源流を訪ねる(1)
フォトレポート:「Windows Server 2008 R2」--あまり知られていない有用な機能10選
企業ITシステムの企画、構築、運用のイロハ
電力に"ふた"をする独自の省エネ機能とは!?
100万円で実現!中小企業の情報漏えい対策
大丈夫?あなたの会社のセキュリティ対策
―エン・ジャパン厳選求人☆毎週更新―
高まるiSCSIストレージへの注目度
【最終警告】パンデミック対策特集