1. ホーム
  2. python

[解決済み] BeautifulSoupでname属性から属性値を取得する

2022-11-04 18:55:10

質問

属性名を元に属性値を表示したいのですが、例として

<META NAME="City" content="Austin">

次のようなことをしたい。

soup = BeautifulSoup(f)  # f is some HTML containing the above meta tag
for meta_tag in soup("meta"):
    if meta_tag["name"] == "City":
        print(meta_tag["content"])

上記のコードでは KeyError: 'name' となっていますが、これはnameがBeatifulSoupで使用されているため、キーワード引数として使用できないためだと思われます。

どのように解決するのですか?

とても簡単で、次のようにします。

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<META NAME="City" content="Austin">')
>>> soup.find("meta", {"name":"City"})
<meta name="City" content="Austin" />
>>> soup.find("meta", {"name":"City"})['content']
u'Austin'

不明な点があれば、コメントを残してください。