[小白向]Python使用request库调用API并获取返回的JSON数据包中的内容

目录

对于参数可以直接写入链接中的接口(适用于参数较少时)

对于参数需要使用字典进行携带的接口(适用于请求头中参数较多时)


本文介绍了使用GET的方式调用API的方式,如需要使用POST方式,将代码中的get换为post即可

对于参数可以直接写入链接中的接口(适用于参数较少时)

对于能够直接通过链接访问,不需要在请求头中提供额外参数的API接口能够直接进行调用可以参考如下代码

此处使用木小果API(https://api.muxiaoguo.cn/)提供的API接口进行示范

import requests
# 使用Get的方式调用API接口,并将返回的值保存为response
response = requests.get('https://api.muxiaoguo.cn/api/tianqi?city=南京&type=1')
# 使用request内置的json()函数将数据解析为列表形式
print(response.json()['data']['cityname']) # 根据想要获取的数据,直接使用索引就行输出
print(response.json()['data']['temp'])
print(response.json()['data']['weather'])
print(response.json()['data']['time'])

附:木小果天气查询API地址链接(https://api.muxiaoguo.cn/doc/tianqi.html

请求参数说明: 

名称 必填 类型 说明
type String 查询类型(1.当天 2.未来7天 3.未来8-15天)
city String 城市名

返回示例:

{
    "code": "200",
    "msg": "success",
    "data": {
        "cityname": "长沙",
        "nameen": "changsha",
        "temp": "21",
        "WD": "西北风",
        "WS": "1级",
        "wse": "12km\/h",
        "SD": "90%",
        "weather": "阴",
        "pm25": "59",
        "limitnumber": "",
        "time": "11:55"
    }
}

对于参数需要使用字典进行携带的接口(适用于请求头中参数较多时)

依然适用上文所提到的API接口,上文所提到的API接口在使用params携带参数时,代码如下所示(此种情况虽可以混用,但仍建议使用POST方法,不建议使用GET方法):

import requests
data = {
    'city': '南京',
    'type': '1'
}
response = requests.get('https://api.muxiaoguo.cn/api/tianqi', params=data)
print(response.json()['data']['cityname'])
print(response.json()['data']['temp'])
print(response.json()['data']['weather'])
print(response.json()['data']['time'])

附:

GET和POST的区别有哪些?

标准答案:

  • GET在浏览器回退时是无害的,而POST会再次提交请求。
  • GET产生的URL地址可以被Bookmark,而POST不可以。

  • GET请求会被浏览器主动cache,而POST不会,除非手动设置。

  • GET请求只能进行url编码,而POST支持多种编码方式。

  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

  • GET请求在URL中传送的参数是有长度限制的,而POST么有。

  • 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

  • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

  • GET参数通过URL传递,POST放在Request body中。

(来自w3schools)

补充说明:

  • GET产生一个TCP数据包;POST产生两个TCP数据包(火狐都只发一个)。
  • 对于本文中的调用API方式,给GET加上request body,给POST带上url参数,在目前的代码中对于大多数网站提供的API接口都是可以正常运行的 。

如有不懂的地方或其他问题,欢迎通过邮箱联系[email protected]与我交流,我将会在看到后的第一时间回复;转载请注明出处。

你可能感兴趣的:(python,request)