如何从 XML 文件中获取值?

How to get value from XML file?

我有那个 xml 文件,我只需要从 steamID64 (76561198875082603).

中获取值
<profile>
 <steamID64>76561198875082603</steamID64>
 <steamID>...</steamID>
 <onlineState>online</onlineState>
 <stateMessage>...</stateMessage>
 <privacyState>public</privacyState>
 <visibilityState>3</visibilityState>
 <avatarIcon>...</avatarIcon>
 <avatarMedium>...</avatarMedium>
 <avatarFull>...</avatarFull>
 <vacBanned>0</vacBanned>
 <tradeBanState>None</tradeBanState>
 <isLimitedAccount>0</isLimitedAccount>
 <customURL>...</customURL>
 <memberSince>December 8, 2018</memberSince>
 <steamRating/>
 <hoursPlayed2Wk>0.0</hoursPlayed2Wk>
 <headline>...</headline>
 <location>...</location>
 <realname>
 <![CDATA[ THEMakci7m87 ]]>
 </realname>
 <summary>...</summary>
 <mostPlayedGames>...</mostPlayedGames>
 <groups>...</groups>
</profile>

现在我只有那个代码:

xml_url = f'{url}?xml=1'

那我就不知道怎么办了

使用 lxml 相当简单:

import lxml.html as lh

steam = """your html above"""

doc = lh.fromstring(steam)
doc.xpath('//steamid64/text()')

输出:

['76561198875082603']

编辑:

有了实际的url,很明显底层数据是xml;所以更好的方法是:

import requests
from lxml import etree

url = 'https://steamcommunity.com/id/themakci7m87/?xml=1'

req = requests.get(url)
doc = etree.XML(req.text.encode())
doc.xpath('//steamID64/text()')

相同的输出。

你最好使用名为 ElementTree

的内置 XML 库

lxml 是一个外部 XML 库,需要单独安装。

见下文

import requests
import xml.etree.ElementTree as ET

r = requests.get('https://steamcommunity.com/id/themakci7m87/?xml=1')
if r.status_code == 200:
  root = ET.fromstring(r.text)
  steam_id_64 = root.find('./steamID64').text
  print(steam_id_64)
else:
  print('Failed to read data.')

输出:

76561198875082603