2016-02-10 139 views
-1

嗨,我想解析this使用requests.get和ElementTree从字符串解析,它不断告诉我,这是一个糟糕的XML文件xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 0。我从请求中获取api的响应,并尝试使用不同的解析器。 这里就是我想:解析来自网络的XML响应

import requests 
from xml.etree import ElementTree 

url = 'https://euw.api.pvp.net/api/lol/euw/v1.3/stats/by-summoner/52456930/summary?season=SEASON2016&api_key=2c0543ab-aeca-476d-8276-a5c23748898c' 
response = requests.get(url) 
xmlstring = response.content # or response.text i dont know 

parser = ElementTree.XMLParser(encoding="utf-8") 
ElementTree.fromstring(xmlstring, parser=parser)` 

我需要解析它,以便从它提出一个具体的变种。

+0

这不是XML。 – stark

+1

它看起来更像JSON。使用'json.loads'。 – L3viathan

回答

0

那就是JSON,而不是XML

您可以使用python json库将其解析为普通的python字典。

import requests, json 

url = 'https://euw.api.pvp.net/api/lol/euw/v1.3/stats/by-summoner/52456930/summary?season=SEASON2016&api_key=2c0543ab-aeca-476d-8276-a5c23748898c' 

response = requests.get(url) 
data = json.loads(response.content) 

for stat in data['playerStatSummaries']: 
    print stat['wins'] 

输出

14 
143 
21 
1 
0 
0 
8 
36 
545 
+0

谢谢!它的工作原理非常完美,我仍然试图为每种游戏类型获取'胜利',比如'Coopvsai'或'Unranked',因为每个玩家都没有按照相同的顺序设置'胜利'。 – Yooooomi