如何从xml错误消息python中提取文本

时间:2019-07-14 21:14:50

标签: python xml beautifulsoup

我想确定beautifulsoup请求的返回结果是否像这样。

Out[32]: 
<?xml version="1.0" encoding="utf-8"?>
<boardgames termsofuse="https://boardgamegeek.com/xmlapi/termsofuse">
<boardgame>
<error message="Item not found"/>
</boardgame>
</boardgames>

我可以使用以下命令提取上一个输出的中心

soup.find_all('boardgame')[0], which produces the following:

Out[24]: 
<boardgame>
<error message="Item not found"/>
</boardgame>

我觉得这应该很简单,我尝试了以下方法,但是我仍然无法确定是否存在“错误消息=“找不到项目”。我在这里错过了什么?

soup.findAll('boardgame')[0].getText()
Out[26]: '\n\n'

1 个答案:

答案 0 :(得分:2)

使用属性message获取值。如果先找到error标签,然后使用属性message

from bs4 import BeautifulSoup

data='''<?xml version="1.0" encoding="utf-8"?>
<boardgames termsofuse="https://boardgamegeek.com/xmlapi/termsofuse">
<boardgame>
<error message="Item not found"/>
</boardgame>
</boardgames>'''

soup=BeautifulSoup(data,'html.parser')
message=soup.find('boardgame').find('error')['message']
print(message)

输出:

  

找不到商品


或者您可以使用CSS选择器

from bs4 import BeautifulSoup

data='''<?xml version="1.0" encoding="utf-8"?>
<boardgames termsofuse="https://boardgamegeek.com/xmlapi/termsofuse">
<boardgame>
<error message="Item not found"/>
</boardgame>
</boardgames>'''

soup=BeautifulSoup(data,'html.parser')

message=soup.select_one('boardgame error')['message']
print(message)

输出:

  

找不到商品