Python:BeautifulSoup-根据名称attribu获取属性值

2024-10-05 13:58:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我想打印一个基于其名称的属性值,例如

<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',我相信这是因为BeatifulSoup使用了name,所以它不能用作关键字参数。


Tags: name名称city属性ishtmltagsome
3条回答

最严厉的人回答了这个问题,但这里有另一种方法来做同样的事情。 另外,在您的示例中,名称用大写字母表示,在代码中,名称用小写字母表示。

s = '<div class="question" id="get attrs" name="python" x="something">Hello World</div>'
soup = BeautifulSoup(s)

attributes_dictionary = soup.find('div').attrs
print attributes_dictionary
# prints: {'id': 'get attrs', 'x': 'something', 'class': ['question'], 'name': 'python'}

print attributes_dictionary['class'][0]
# prints: question

print soup.find('div').get_text()
# prints: Hello World

很简单,使用以下方法-

>>> 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'

如果有什么不清楚的地方,请留言。

以下工作:

from bs4 import BeautifulSoup

soup = BeautifulSoup('<META NAME="City" content="Austin">', 'html.parser')

metas = soup.find_all("meta")

for meta in metas:
    print meta.attrs['content'], meta.attrs['name']

相关问题 更多 >

    热门问题