BeautifulSoupによるスクレイピングで、タグを取り除いてテキストだけ含む文字列を返したい場合は、出力する際に.get_text()を使います。
次のコードは、このブログのトップページに表示されている記事一覧のタイトルをリスト表示するものです。
from urllib.request import urlopen
from bs4 import BeautifulSoup
from bs4 import BeautifulSoup
html = urlopen(‘https://kubogen.com/’)
bs = BeautifulSoup(html.read(), ‘html.parser’)
articleList = bs.find_all(‘h2’, {‘class’:’entry-title’})
for article in articleList:
print(article.get_text())
get_text()を使って出力しているので、次のようにタイトルがリスト表示されます。
しかし、get_text()を使わずに「print(article)」とした場合には、次のように出力されます。
小さくて見づらいですが、h2タグやaタグも表示されています。
タグ以外のテキスト部分のみ出力したいというケースはけっこうあると思うので、その場合はget_text()を使います。
ただ、テキストブロックよりBeautifulSoupオブジェクトの方が目的のものを見つけやすいので、get_text()は出力やデータベースに格納するときなど、最終のデータ処理をする直前に使うのがいいと思います。
Leave a Comment