16

我想访问一个名为的标签,"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>
4

5 回答 5

18

你可以这样试试

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

或者

print soup.find('name').string
于 2013-01-21T09:14:46.613 回答
5

这是我得到的:

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

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

于 2013-01-21T09:16:10.100 回答
2

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

例子:

c2.find('name')

<name>Yesügey</name>

c2.find('name').contents

耶苏盖

于 2013-01-21T09:16:44.563 回答
0

描述的是访问 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'
>>> 
于 2013-01-21T09:16:30.293 回答
0

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

我的解决方案:

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

于 2021-10-13T02:57:41.227 回答