Beautiful Soup 4でうまくパースできなかった
Beautiful Soup で html.parser を使うのはやめましょう 😇
Beautiful Soup でスクレイピングしてると、tbody 要素がなかったことになってたり、同じ種類の子要素が 5 番目移行消えてたりと全然うまくパースできない問題がありました。
パーサを html.parser から lxml にするだけで解決しました。
# soup = BeautifulSoup(html, "html.parser")
soup = BeautifulSoup(html, "lxml")
ドキュメントによると 4 つのパーサが使えるみたいです。
- Python’s html.parser:
html.parser - lxml’s HTML parser:
lxml - lxml’s XML parser:
lxml-xml - html5lib:
html5lib
Beautiful Soup Documentation — Beautiful Soup 4.4.0 documentation
Beautiful Soup 以外のライブラリに依存することになりますが、基本的に lxml を使うでよさそうですね。
場合によっては html5lib って感じでしょうか。