如何在 BeautifulSoup 中访问名为“name”的标签

Posted

技术标签:

【中文标题】如何在 BeautifulSoup 中访问名为“name”的标签【英文标题】:How to access a tag called "name" in BeautifulSoup 【发布时间】:2013-01-04 07:24:35 【问题描述】:

我想访问一个名为"name" 的标签,例如:

<contact><name>Yesügey</name><lastName>Yeşil</lastName><phone>+90 333 9695395</phone></contact>

由于"name" 是BeautifulSoup 标签对象的属性,我无法访问子标签name

>>> c1
<contact><name>Yesügey</name><lastname>Yeşil</lastname><phone>+90 333 9695395</p
hone></contact>
>>> c1.name
'contact'
>>> c1.lastname
<lastname>Yeşil</lastname>

【问题讨论】:

你为什么不想要像 lxml 或 etree 这样的 XML 解析器? 我有同样的问题,因为 kml 使用 标签 【参考方案1】:

你可以这样试试,

>>> soup=BeautifulSoup.BeautifulSoup(content).findAll('name')
>>> for field in soup:
...     print field
... 
<name>Yesügey</name>

或者

print soup.find('name').string

【讨论】:

【参考方案2】:

这是我得到的:

from bs4 import BeautifulSoup as BS
soup = '<contact><name>Yesügey</name><lastName>Yeşil</lastName><phone>+90 333 9695395</phone></contact>'
soup = BS(soup)
print soup.find('name').string
# Prints YesĂźgey

所以我没有调用名称标签,而是简单地找到它并获取其中的内容:)。

【讨论】:

【参考方案3】:

描述的是访问xml元素名称的两种不同策略

>>> xmlstring = '<contact><name>Yesügey</name><lastName>Yeşil</lastName><phone>+90 333    9695395</phone></contact>'
>>> from BeautifulSoup import BeautifulSoup as Soup
>>> f = Soup(xmlstring)
>>> f.find('name')
<name>YesĂźgey</name>
>>> f.contact.name
u'contact'
>>> 

【讨论】:

【参考方案4】:

您可以使用.find() 方法:

例子:

c2.find('name')

Yesügey

c2.find('name').contents

是的

【讨论】:

【参考方案5】:

迟到的答案,但我在尝试查找 &lt;textarea name=COMMENTS&gt; 时遇到了同样的问题

我的解决方案:

node = soup.find("textarea", attrs="name": "COMMENTS"

【讨论】:

以上是关于如何在 BeautifulSoup 中访问名为“name”的标签的主要内容,如果未能解决你的问题,请参考以下文章

ModuleNotFoundError:没有名为“bs4”的模块 [BeautifulSoup]

使用 BeautifulSoup 获取第 n 个元素

如何使用BeautifulSoup访问标签的属性值

如何使用 BeautifulSoup 访问命名空间的 XML 元素?

安装了 BeautifulSoup 但仍然没有得到名为 bs4 的模块

如何在 Python 中使用 BeautifulSoup 保存对 HTML 文件所做的更改?