#daiizメモ

Scrapboxに夢中

python学習日記 2日目

だいぶ間が空いてしまいましたが『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:今回のためだけに即席で作ったページですので特に意味はありません。表示される画像は渾身の力作です。