アイキャッチ画像

PythonのBeautifulSoup4でHTMLの要素の内容にアクセスする

BeautifulSoup4を使って、HTMLタグの内容にアクセスしてみます。

例として、下記のような典型的なaタグで試してみます。

<a id="test" href="https://example.com/">link text</a>

このタグをBeautifulSoupオブジェクトにして、タグの名前、テキスト、属性をそれぞれ取り出してみます。

# モジュールのインポート
>>> from bs4 import BeautifulSoup

# オブジェクトの生成
>>> soup = BeautifulSoup('<a id="test" href="https://example.com/">link text</a>', 'html.parser')

# aタグ全体
>>> soup.a
<a href="https://example.com/" id="test">link text</a>

# タグの名前を表示する
>>> soup.a.name
'a'

# タグの内容を取り出す
>>> soup.a.string
'link text'
>>> soup.a.text  # マニュアルにはstringだけが書いてあります。
'link text'

# href属性の値を取り出す
>>> soup.a['href']
'https://example.com/'

# id属性の値を取り出す
>>> soup.a['id']
'test'

# 全ての属性と値を取り出す
>>> soup.a.attrs
{'id': 'test', 'href': 'https://example.com/'}

「soup.タグ名」で操作したいタグを指定して、コンテキストを取り出したい場合はstringを、属性を取り出したい場合はattrsにアクセスするか属性名をインデックスにしてアクセスする感じです。

広告

PythonとXMLカテゴリの投稿