【发布时间】:2018-09-23 21:42:34
【问题描述】:
我知道关于使用 Python 3 进行 xml 解析的问题有几个答案,但我找不到我所拥有的两个的答案。我正在尝试从 BoardGameGeek xml 文件中解析和提取信息,如下所示(我在这里粘贴太长了):
https://www.boardgamegeek.com/xmlapi/boardgame/10
1) 我无法从这两行中提取主要游戏名称:
<name sortindex="1" primary="true">Elfenland</name>
<name sortindex="1">Elfenland (Волшебное Путешествие)</name>
2) 我也无法提取数据列表,例如在这个 xml 中:
<poll title="User Suggested Number of Players" totalvotes="96" name="suggested_numplayers">
<results numplayers="1">
<result numvotes="0" value="Best"/>
<result numvotes="0" value="Recommended"/>
<result numvotes="58" value="Not Recommended"/>
</results>
<results numplayers="2">
<result numvotes="2" value="Best"/>
<result numvotes="21" value="Recommended"/>
<result numvotes="53" value="Not Recommended"/>
</results>
<results numplayers="3">
<result numvotes="10" value="Best"/>
<result numvotes="46" value="Recommended"/>
<result numvotes="17" value="Not Recommended"/>
</results>
<results numplayers="4">
<result numvotes="47" value="Best"/>
<result numvotes="36" value="Recommended"/>
<result numvotes="1" value="Not Recommended"/>
</results>
<results numplayers="5">
<result numvotes="35" value="Best"/>
<result numvotes="44" value="Recommended"/>
<result numvotes="2" value="Not Recommended"/>
</results>
<results numplayers="6">
<result numvotes="23" value="Best"/>
<result numvotes="48" value="Recommended"/>
<result numvotes="11" value="Not Recommended"/>
</results>
<results numplayers="6+">
<result numvotes="0" value="Best"/>
<result numvotes="1" value="Recommended"/>
<result numvotes="46" value="Not Recommended"/>
</results>
</poll>
目前,我的代码非常简单,看起来像这样。它只提取简单的单值 xml 行。关于如何提取更复杂信息的任何帮助都会很棒。谢谢。
url = 'https://www.boardgamegeek.com/xmlapi/boardgame/10'
response = urllib.request.urlopen(url)
data = response.read() # a `bytes` object
text = data.decode('utf-8') # a `str`;
soup = BeautifulSoup(text,'xml')
yearpublished = soup.find_all('yearpublished')
【问题讨论】:
标签: xml python-3.x beautifulsoup