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

时间:2013-01-21 08:59:42

标签: python xml beautifulsoup

我想访问名为"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 个答案:

答案 0 :(得分:17)

你可以这样试试,

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

或者

print soup.find('name').string

答案 1 :(得分: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

因此,我只是找到它并获取其中的内容而不是调用名称标签。)。

答案 2 :(得分:2)

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

示例:

c2.find('name')

  

&LT;名称&gt;&YesügeyLT; /名称&gt;

c2.find('name').contents

  

Yesügey

答案 3 :(得分: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'
>>>