BeautifulSoup4でHTMLの要素を取得する時はfindやselectといったコードで指定してあげれば良い。ちなみにXPathは利用できないので注意。
soup.find系
基本的にソースコードをタグを含め全件取得してくれる。全部取得してくれる反面、後でstripなどで不要な文字列を削除しなければならない。
1 2 3 |
soup.find('a') #1件取得 soup.find_all('a') #全件取得 soup.find('a', class_="CssClassName") #CSSクラスで取得 |
※classはPythonの予約語なので_(アンダーバー)を後ろに付けるルールになっています。
soup.select系
個人的にはこれが最も使う。HTMLをかじっている人にはこっちの方が分かりやすいかと。
1 2 3 |
soup.select('li') #全件取得 soup.select_one('li') #一件だけ取得 soup.select('a.CssClassName') #CSSクラスで取得 |
子要素だけに適用したければ親要素からドリルダウンして書いてあげれば良い。
1 |
soup.select('dev#idName > section.ClassName > ul > li') |
他にもありますが詳しくは公式ドキュメントを見てみてください。
https://www.crummy.com/software/BeautifulSoup/bs4/doc/#find
正規表現との組み合わせ
上記の命令等と合わせ正規表現を使って文字列を操作するのが業務では多いでしょう。PythonでいうとRegex関数などはreを用いて指定のcommandでつなぎます。
尚 re は標準ライブラリらしいので、冒頭でインポートしておきましょう。
公式ドキュメントはこちらを
https://docs.python.org/ja/3/howto/regex.html
https://docs.python.org/ja/3/library/re.html#module-re
1 2 |
import re soup.find_all(re.compile("^section")) |