我试图从这个json中得到所有的长足和长情。
法典:
import urllib.parse
import requests
raw_json = 'http://live.ksmobile.net/live/getreplayvideos?userid='
print()
userid = 735890904669618176
#userid = input('UserID: ')
url = raw_json + urllib.parse.urlencode({'userid=': userid}) + '&page_size=1000'
print(url)
json_data = requests.get(url).json()
print()
for coordinates in json_data['data']['video_info']:
print(coordinates['lat'], coordinates['lnt'])
print()
错误:
/usr/bin/python3.6 /media/anon/3D0B8DD536C9574F/PythonProjects/getLocation/getCoordinates
http://live.ksmobile.net/live/getreplayvideos?userid=userid%3D=735890904669618176&page_size=1000
Traceback (most recent call last):
File "/media/anon/3D0B8DD536C9574F/PythonProjects/getLocation/getCoordinates", line 17, in <module>
for coordinates in json_data['data']['video_info']:
TypeError: list indices must be integers or slices, not str
Process finished with exit code 1
我哪里出错了?
提前感谢您的帮助和时间。
我只是发布一些json来展示它的样子。 json 如下所示:
{
"status": "200",
"msg": "",
"data": {
"time": "1499275646",
"video_info": [
{
"vid": "14992026438883533757",
"watchnumber": "38",
"topicid": "0",
"topic": "",
"vtime": "1499202678",
"title": "happy 4th of july",
"userid": "735890904669618176",
"online": "0",
"addr": "",
"isaddr": "2",
"lnt": "-80.1282576",
"lat": "26.2810628",
"area": "A_US",
"countryCode": "US",
"chatSystem": "1",
},
完整 json:https://pastebin.com/qJywTqa1
您的网址构造不正确。您构建的 URL(如脚本输出中所示)为:
http://live.ksmobile.net/live/getreplayvideos?userid=userid%3D=735890904669618176&page_size=1000
你真正想要这个的地方:
http://live.ksmobile.net/live/getreplayvideos?userid=735890904669618176&page_size=1000
所以你实际上在你的响应中得到了这个 JSON:
{
"status": "200",
"msg": "",
"data": []
}
这就是您看到该错误的原因。
以下是更正后的脚本:
import urllib.parse
import requests
raw_json = 'http://live.ksmobile.net/live/getreplayvideos?'
print()
userid = 735890904669618176
#userid = input('UserID: ')
url = raw_json + urllib.parse.urlencode({'userid': userid}) + '&page_size=1000'
print(url)
json_data = requests.get(url).json()
print()
for coordinates in json_data['data']['video_info']:
print(coordinates['lat'], coordinates['lnt'])
print()
根据您发布的 json,您在此语句中有问题-
print(coordinates['lat'], coordinates['lnt'])
这里coordinates
是一个只有一个项目的列表,即字典。所以你的陈述应该是——
print(coordinates[0]['lat'], coordinates[0]['lnt'])