概要
- bs4の文字列抽出の挙動についての実験
まとめ
-
soup.p.string
がNoneになるのはNavigableStringの仕様どおり - soupで読み込んだ時点で閉じタグがないタイプのタグは補完が行われていると思われる
- たとえ
<br>
であっても。。
- たとえ
共通部分
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = """
<p>
tanaka
<br>
tarou
<br>
</p>
"""
soup = BeautifulSoup(html, 'html.parser')
やりたいこと
- 型はなんでもいいから"tanaka tarou"が取り出したい
抽出のための試行錯誤
- 実行結果の後にコマンドの形式で記載
最も単純なパターン
# None
print(soup.p.string)
stringsでループ
'''
tanaka
tarou
'''
for string in soup.p.strings:
print(string)
brタグを除去
'''
<p>
tanaka
</p>
'''
# soup内のbrタグを全削除
[s.extract() for s in soup('br')]
print(soup.p)
'''
tanaka
'''
print(soup.p.title)
さらに実験
- soup上でご丁寧にbrの閉じタグが保管されていた。。。
'''
<br>
tarou
<br>
</br></br>
'''
print(soup.br.string)