【发布时间】:2018-09-23 23:23:55
【问题描述】:
这是我上一个问题 (Parsing xml file using Python3 and BeautifulSoup) 的第二部分。
我想知道如何解析以下列表,因为它们具有不同的 xml 结构。此外,我需要区分不同的列表(或单个 xml 文件中的“投票标题”。我可以搜索“结果”元素,但该元素存在于文件中的 3 个单独列表中。
第一个投票标题 xml 列表使用此代码提取数据。 'numplayers = True' 参数将此列表与其他两个列表区分开来,但结果行中没有这些列表的属性。
for result in soup.find_all('results', numplayers = True):
numplayers = result['numplayers']
best = result.find('result', {'value': 'Best'})['numvotes']
recommended = result.find('result', {'value': 'Recommended'})['numvotes']
not_recommended = result.find('result', {'value': 'Not Recommended'})['numvotes']
print (numplayers, best, recommended, not_recommended)
我似乎不知道如何为以下两个 xml 列表编写类似于此代码的内容。谢谢你。
<poll title="Language Dependence" name="language_dependence" totalvotes="32">
<results>
<result value="No necessary in-game text" numvotes="32" level="1"/>
<result value="Some necessary text - easily memorized or small crib sheet" numvotes="0" level="2"/>
<result value="Moderate in-game text - needs crib sheet or paste ups" numvotes="0" level="3"/>
<result value="Extensive use of text - massive conversion needed to be playable" numvotes="0" level="4"/>
<result value="Unplayable in another language" numvotes="0" level="5"/>
</results>
</poll>
<poll title="User Suggested Player Age" name="suggested_playerage" totalvotes="32">
<results>
<result value="2" numvotes="0"/>
<result value="3" numvotes="0"/>
<result value="4" numvotes="0"/>
<result value="5" numvotes="1"/>
<result value="6" numvotes="6"/>
<result value="8" numvotes="15"/>
<result value="10" numvotes="10"/>
<result value="12" numvotes="0"/>
<result value="14" numvotes="0"/>
<result value="16" numvotes="0"/>
<result value="18" numvotes="0"/>
<result value="21 and up" numvotes="0"/>
</results>
</poll>
这是我认为应该适用于语言依赖列表的内容,但它没有。
for result in soup.find_all('result',level=True):
level = result['level']
None = result.find('result', {'level': '1'})['numvotes']
Some = result.find('result', {'level': '2'})['numvotes']
Mod = result.find('result', {'level': '3'})['numvotes']
Ext = result.find('result', {'level': '4'})['numvotes']
Unp = result.find('result', {'level': '5'})['numvotes']
【问题讨论】:
-
能否分享一下网址。
标签: xml python-3.x beautifulsoup