如何在 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 使用你可以这样试试,
>>> 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】:迟到的答案,但我在尝试查找 <textarea name=COMMENTS>
时遇到了同样的问题
我的解决方案:
node = soup.find("textarea", attrs="name": "COMMENTS"
【讨论】:
以上是关于如何在 BeautifulSoup 中访问名为“name”的标签的主要内容,如果未能解决你的问题,请参考以下文章
ModuleNotFoundError:没有名为“bs4”的模块 [BeautifulSoup]
如何使用 BeautifulSoup 访问命名空间的 XML 元素?