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
のような結果になる。
タグの中身が文字がだけなら大丈夫だが、タグが含まれているとこのようになるようだ。
正直、これのせいで大分詰まった。ので記事にしました。