PythonによるWebスクレイピングでは、requests と Beautiful Soup の2つのライブラリが定番です。requestsでHTMLをダウンロードし、Beautiful Soup で解析して情報を取り出します。

Beautiful Soup でHTMLの中からHTML要素を取得するには「find系」(find_all()、find())と「select系」(select()、select_one())という2タイプのメソッドを用います。

機能は2つとも同じであり、検索条件に合うHTML要素を返します。

異なるのは「検索条件の指定方法」です。例えば、href属性が”sample.pdf”のa要素を検索するには、それぞれ以下のような書き方になります。どちらも同じ要素を返します。

soup.find_all("a", href="sample.pdf")
soup.select("a[href='sample.pdf']")

このように、find_all()メソッドは「要素名」に続いて「属性」をキーワード引数で指定できます。一方、select()メソッドは、「CSSセレクタ」が使えます。

find_all()とselect()は要素をリストで返しますが、以下の表のようにマッチする要素をひとつだけ返すメソッドも用意されています。