最初のBeautifulSoupプログラム

せっかくBeautifulSoupをインストールしたのですから、何かプログラムを書かないわけにはいきません。

プログラムで使われないライブラリは、冷蔵庫の奥で眠っている使用期限切れのキムコのようなものです。

ハードディスクの容量を無駄にしないためにも、一刻も早くサンプルプログラムを書いて見る必要があります。

これがBeautifulSoupの威力だ!

とりあえず、参考文献(PythonによるWebスクレイピング)のサンプルプログラムを真似てみます。

「カタカタカタ・・・」

(サンプルプログラム) bs_sample.py

from urllib.request import urlopen
from bs4 import BeautifulSoup

html = urlopen("http://www.pythonscraping.com/pages/page1.html")
# ダウンロードしたHTMLファイルのテキストデータ(バイナリデータ)を
# BeautifulSoupのコンストラクタに渡してやる。
bsObj = BeautifulSoup(html.read())
print(bsObj.h1) # HTMLファイル中のh1タグの値を表示する。

これを実行する。

$ python3 bs_sample.py
UserWarning: No parser was explicitly specified,
so I'm using the best available HTML parser for this system ("html.parser"). 
This usually isn't a problem, but if you run this code on another system, 
or in a different virtual environment, 
it may use a different parser and behave differently.

To get rid of this warning, change this:

 BeautifulSoup([your markup])

to this:

 BeautifulSoup([your markup], "html.parser")

  markup_type=markup_type))
<h1>An Interesting Title</h1>

なにやら、ワーニングが出ています。
意訳すると、
「パーサーが明示されていないので、最も役に立つHTMLパーサー(html.parser)を使用しました。もし問題が発生した場合は、他のパーサーを試してくださいね。
このワーニングを取る場合は、
BeautifulSoup([マークアップ])

BeautifulSoup([マークアップ], “html.parser”)
に変更してください。」
となる。

BeautifulSoupのバージョンアップに伴い、ワーニングが出るようになったのかもしれない。

ワーニングが出るのは気分が悪くなるので、

bsObj = BeautifulSoup(html.read())

bsObj = BeautifulSoup(html.read(), "html.parser")

に変更してやった。
そしてもう一度プログラムを実行すると、

$ python3 bs_sample.py
<h1>An Interesting Title</h1>

今度は、ちゃんと表示された。

わざわざ<h1>タグを取り出すプログラムを書かなくてもいいのだ。
こんな嬉しいことはない。(T_T) (機動戦士ガンダム最終回のアムロ風)

Pythonプログラミング物語 © 2016 Frontier Theme