我使用以下代码通过复制提交给它的XHR请求从网站返回数据:
import requests
url = 'http://www.whoscored.com/stageplayerstatfeed/-1/Overall'
params = {
'field': '0',
'isAscending': 'false',
'isMoreThanAvgApps': 'true',
'isOverall': 'false',
'numberOfPlayersToPick': '20',
'orderBy': 'Rating',
'page': '1',
'stageId': '9155',
'teamId': '-1'
}
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest',
'Host': 'www.whoscored.com',
'Referer': 'http://www.whoscored.com/'}
responser = requests.get(url, params=params, headers=headers)
responser = responser.text
responser = responser.encode('cp1252')
print responser
这将返回一组嵌套列表。第一个列表是一个简单列表,而第二个列表是字典列表。我想要返回第二个列表。
我已尝试将代码的最后一行修改为print responser[1]
,但出于某种原因,这只会打印[
。
任何人都能明白为什么这不能归还我需要的东西吗?
由于
答案 0 :(得分:1)
responser
变量包含JSON字符串。这意味着,当您获得responser[1]
时,您基本上会从字符串中获取第二个字符,即[
。
将JSON字符串加载到python列表中。最简单的方法是使用requests
模块提供的.json()
方法:
responser = requests.get(url, params=params, headers=headers)
data = responser.json()
print data[1]
答案 1 :(得分:1)
因为您正在将请求响应转换为文本。所以这一行:
responser = responser.text
应该是:
responser = responser.json()
然后你可以打印:
print responser[1]