2014-10-07 78 views
0

我使用下面的代碼,通過複製提交給它一個XHR請求,從網站返回的數據:從通過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],但由於某些原因,這只是輸出[

任何人都可以看到爲什麼這沒有返回我所需要的?

感謝

回答

1

responser變量包含一個JSON字符串。這意味着當你得到responser[1]時,你基本上得到了字符串中的第二個字符,即[

將JSON字符串加載到python列表中。最簡單的方法是使用.json()方法requests模塊提供:

responser = requests.get(url, params=params, headers=headers) 
data = responser.json() 
print data[1] 
1

因爲你打開請求響應轉換成文本。所以這條線:

responser = responser.text 

應該是:

responser = responser.json() 

然後你就可以打印:

print responser[1]