BeautifulSoupでタグの中身の文字列を取得するときに使用すべきメソッド
tag.string よりも tag.get_text() を使用すべきです。
tag.string よりも tag.get_text() を使用すべき理由
例えばこんな感じのソースコードがあるとする。
import urllib.request, urllib.error from bs4 import BeautifulSoup url ="適当なサイトのURL" html = urllib.request.urlopen(url) soup = BeautifulSoup(html, "html.parser") tag = soup.select("div")[0] print(type(tag.string)) print(type(tag.get_text()))
print(type(tag.string)) の方は、タグの内容によってはNoneTypeになる。
print(type(tag.get_text())) の場合は、必ず文字列型になる。
tag.stringではダメなパターン
<div> テキスト <div> テキスト2 </div> </div>
タグがこのような内容になっていると、tag.stringはNoneTypeになる。
一方で、tag.get_text()の場合、
テキスト テキスト2
のような結果になる。
タグの中身が文字がだけなら大丈夫だが、タグが含まれているとこのようになるようだ。
正直、これのせいで大分詰まった。ので記事にしました。