だいぶ間が空いてしまいましたが『python学習日記 2日目』です。今回の勉強の過程でできたコードはこちらです。
今回のテーマ
- ウェブページにアクセスしてHTMLコードを取得する
- HTMLコードを解析する
ウェブページにアクセスしてHTMLを取得する
Pythonでは簡単に外部のウェブページのURLを指定して情報を取得することができます。標準で備わっているurllib
というモジュールを使用します。プログラムの冒頭で以下のような一文を書いておくだけでOKです。
import urllib
main関数の中に次のコードを書くと、プログラムは指定されたURL(http://daiz-projects.appspot.com/hoge/bar.html)*1にアクセスして、内容を読み取ります。ここでは読み込んだファイル内容を一旦変数f
に保持しています。fに対してread関数を作用するとHTMLが出力されます。
my_page = 'http://daiz-projects.appspot.com/hoge/bar.html' f = urllib.urlopen(my_page) print f.read()
HTMLを解析する
ここではとても便利なBeautifulSoup
モジュールを使います。最新のバージョンである「beautifulsoup4」を使用したいので、以下のようにpipを実行してインストールします。
pip install beautifulsoup4
インストールが完了したら、プログラムの冒頭にimport文を追加して以下のようにします。
import urllib from bs4 import BeautifulSoup
kondou.com - Beautiful Soup 4.2.0 Doc. 日本語訳 (2013-11-19最終更新)を参考しながら色々試してみます。
HTMLを表示する
print soup.prettify()
titleタグ内の文字列を取得する
print soup.title.text
divタグが何個あるかを調べる
print len(soup.find_all('div'))
最初のdivタグを表示する
print soup.find('div')
最後のdivタグを表示する
print soup.find_all('div')[-1]
idがaである要素を表示する
print soup.find(id='a')
idがaである要素の子要素のうち、idがbである要素を表示する
id_a_tag = soup.find(id='a') print id_a_tag.find(id='b')
ドキュメント中の画像のURL(src属性の値)をすべて表示する
for img_tag in soup.find_all('img'): print img_tag['src']
以上です。
*1:今回のためだけに即席で作ったページですので特に意味はありません。表示される画像は渾身の力作です。