Python 中的 HTTP 请求和 JSON 解析[重复]
- 2024-12-24 08:55:00
- admin 原创
- 114
问题描述:
我想通过 Google Directions API 动态查询 Google 地图。例如,此请求计算从伊利诺伊州芝加哥到加利福尼亚州洛杉矶的路线,途经密苏里州乔普林和俄克拉荷马州俄克拉荷马城的两个航点:
http://maps.googleapis.com/maps/api/directions/json?origin=芝加哥,伊利诺伊州&destination=洛杉矶+安吉利斯,CA&waypoints=乔普林,密苏里州|俄克拉荷马州+城市,OK&sensor=false
它以 JSON 格式返回结果。
我如何在 Python 中做到这一点?我想发送这样的请求,接收结果并解析它。
解决方案 1:
我建议使用 awesome请求库:
import requests
url = 'http://maps.googleapis.com/maps/api/directions/json'
params = dict(
origin='Chicago,IL',
destination='Los+Angeles,CA',
waypoints='Joplin,MO|Oklahoma+City,OK',
sensor='false'
)
resp = requests.get(url=url, params=params)
data = resp.json() # Check the JSON Response Content documentation below
JSON 响应内容: https: //requests.readthedocs.io/en/master/user/quickstart/#json-response-content
解决方案 2:
由于内置了 JSON 解码器,Python模块requests
负责检索 JSON 数据并对其进行解码。以下是取自模块文档的示例:
>>> import requests
>>> r = requests.get('https://github.com/timeline.json')
>>> r.json()
[{u'repository': {u'open_issues': 0, u'url': 'https://github.com/...
因此,没有必要使用某些单独的模块来解码 JSON。
解决方案 3:
requests
有内置.json()
方法
import requests
requests.get(url).json()
解决方案 4:
import urllib
import json
url = 'http://maps.googleapis.com/maps/api/directions/json?origin=Chicago,IL&destination=Los+Angeles,CA&waypoints=Joplin,MO|Oklahoma+City,OK&sensor=false'
result = json.load(urllib.urlopen(url))
解决方案 5:
使用请求库,漂亮地打印结果,以便您可以更好地找到要提取的键/值,然后使用嵌套的 for 循环来解析数据。在示例中,我提取了分步驾驶路线。
import json, requests, pprint
url = 'http://maps.googleapis.com/maps/api/directions/json?'
params = dict(
origin='Chicago,IL',
destination='Los+Angeles,CA',
waypoints='Joplin,MO|Oklahoma+City,OK',
sensor='false'
)
data = requests.get(url=url, params=params)
binary = data.content
output = json.loads(binary)
# test to see if the request was valid
#print output['status']
# output all of the results
#pprint.pprint(output)
# step-by-step directions
for route in output['routes']:
for leg in route['legs']:
for step in leg['steps']:
print step['html_instructions']
解决方案 6:
只需import requests
使用json()
方法:
source = requests.get("url").json()
print(source)
或者你可以使用这个:
import json,urllib.request
data = urllib.request.urlopen("url").read()
output = json.loads(data)
print (output)
解决方案 7:
尝试一下:
import requests
import json
# Goole Maps API.
link = 'http://maps.googleapis.com/maps/api/directions/json?origin=Chicago,IL&destination=Los+Angeles,CA&waypoints=Joplin,MO|Oklahoma+City,OK&sensor=false'
# Request data from link as 'str'
data = requests.get(link).text
# convert 'str' to Json
data = json.loads(data)
# Now you can access Json
for i in data['routes'][0]['legs'][0]['steps']:
lattitude = i['start_location']['lat']
longitude = i['start_location']['lng']
print('{}, {}'.format(lattitude, longitude))
解决方案 8:
对于控制台上的漂亮 Json 也是如此:
import json
json.dumps(response.json(), indent=2)
可以使用缩进转储。(请导入 json)
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理必备:盘点2024年13款好用的项目管理软件
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
热门标签
云禅道AD