一、常见的2种接口请求
1、GET请求
import requests
def get_request():
headers = {
'accept': '*/*',
'accept-language': 'zh-CN,zh;q=0.9',
'cache-control': 'no-cache',
'content-type': 'application/x-www-form-urlencoded',
'pragma': 'no-cache',
'cookie': '_ntes_origin_from=baidu; Qs_lvt_382223=1734324724; Qs_pv_382223=1610729405889057800; _ga=GA1.1.1140112337.1734324724; _clck=gp1it9%7C2%7Cfrr%7C0%7C1811; timing_user_id=time_oZyRJJXz1I; _ga_C6TGHFPQ1H=GS1.1.1734324724.1.1.1734324743.0.0.0; NMTID=00O-Cp-zVoYPEPzeUWdtWiHQAFkVOIAAAGUVJdqEA; JSESSIONID-WYYY=5qzkynBkH83SUUjq%2FjyGy1KGTCMs7vJT8agAhp828aB3W6S0H0%5CxOaH8%2BqSrjfaVNgsM0Tmo7hll7nF4%5CkWfEywakj4Yy6sIZbaYHOMvK9twD%5C5Uf%2FK43ShC1uEUZoeIIP0GEt2TC3UaRBwlK%2BmvG%5C%5Ca%2Fs43U%2BDgFXbuMnX%2BRoxWWAJ%2F%3A1736587799164; _iuqxldmzr_=32; _ntes_nnid=7bd787ee832624c45dff7ba7c8fbfac9,1736585999192; _ntes_nuid=7bd787ee832624c45dff7ba7c8fbfac9; WM_NI=RzeeFd1DPT5nG9iKmEvZPDC7uE3XYZri9Qde1iHKElF9KKt18UlEBbGiUB8iu9Cpv1WY5X2yCFMVyyns9cBzDeepQBKabwYFjBAdnbvSHIODpAH5fBKmYafrbCrJwLbgUHA%3D; WM_NIKE=9ca17ae2e6ffcda170e2e6eea6e55ff49ea7a9e86e8a868bb2d55b968e9badc7539896a5d1ed34e9b6b785b12af0fea7c3b92a92a6ab86c570f39ca0b5b86685e7a7acf04fb686a0a5c23db79bfdb9dc52b2b7f7b2e76ff3b788acc86886e785acf73bfc8ba4a6c16a85b79ba3bb63b7e78d91f53b9587fbb9b173819a83b7fc73aeadf784c17288bbab91d44a89bfae98dc4eaa9e8f85ed6ab68d88aace50b49f88d6e54a89b39782e57aa29dbeabf648a2b99ba9c437e2a3; WM_TID=hnMj2krbGMhEAFABQQKGdHYhwitu2zJj; WEVNSM=1.0.0; WNMCID=rhnvat.1736586003336.01.0; sDeviceId=YD-MGPnFqEy8zxBV0FVFBORbDbRzqJ2SKXM; ntes_utid=tid._.uc7e2Ep%252F%252FPpBEwRQQUfSZCZ1gi%252BDNwD9._.0'
}
params = {
'csrf_token': '',
}
response = requests.get(
url='https://music.163.com/m/api/encryption/param/get',
params=params,
headers=headers
)
print(response.text)
2、POST请求
import requests
def post_request():
headers = {
'accept': '*/*',
'accept-language': 'zh-CN,zh;q=0.9',
'cache-control': 'no-cache',
'content-type': 'application/x-www-form-urlencoded',
'origin': 'https://music.163.com',
'referer': 'https://music.163.com/playlist?id=13015254350',
'sec-ch-ua': '"Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"',
'cookie': '_ntes_origin_from=baidu; Qs_lvt_382223=1734324724; Qs_pv_382223=1610729405889057800; _ga=GA1.1.1140112337.1734324724; _clck=gp1it9%7C2%7Cfrr%7C0%7C1811; timing_user_id=time_oZyRJJXz1I; _ga_C6TGHFPQ1H=GS1.1.1734324724.1.1.1734324743.0.0.0; NMTID=00O-Cp-zVoYPEPzeUWdtWiHQAFkVOIAAAGUVJdqEA; JSESSIONID-WYYY=5qzkynBkH83SUUjq%2FjyGy1KGTCMs7vJT8agAhp828aB3W6S0H0%5CxOaH8%2BqSrjfaVNgsM0Tmo7hll7nF4%5CkWfEywakj4Yy6sIZbaYHOMvK9twD%5C5Uf%2FK43ShC1uEUZoeIIP0GEt2TC3UaRBwlK%2BmvG%5C%5Ca%2Fs43U%2BDgFXbuMnX%2BRoxWWAJ%2F%3A1736587799164; _iuqxldmzr_=32; _ntes_nnid=7bd787ee832624c45dff7ba7c8fbfac9,1736585999192; _ntes_nuid=7bd787ee832624c45dff7ba7c8fbfac9; WM_NI=RzeeFd1DPT5nG9iKmEvZPDC7uE3XYZri9Qde1iHKElF9KKt18UlEBbGiUB8iu9Cpv1WY5X2yCFMVyyns9cBzDeepQBKabwYFjBAdnbvSHIODpAH5fBKmYafrbCrJwLbgUHA%3D; WM_NIKE=9ca17ae2e6ffcda170e2e6eea6e55ff49ea7a9e86e8a868bb2d55b968e9badc7539896a5d1ed34e9b6b785b12af0fea7c3b92a92a6ab86c570f39ca0b5b86685e7a7acf04fb686a0a5c23db79bfdb9dc52b2b7f7b2e76ff3b788acc86886e785acf73bfc8ba4a6c16a85b79ba3bb63b7e78d91f53b9587fbb9b173819a83b7fc73aeadf784c17288bbab91d44a89bfae98dc4eaa9e8f85ed6ab68d88aace50b49f88d6e54a89b39782e57aa29dbeabf648a2b99ba9c437e2a3; WM_TID=hnMj2krbGMhEAFABQQKGdHYhwitu2zJj; WEVNSM=1.0.0; WNMCID=rhnvat.1736586003336.01.0; sDeviceId=YD-MGPnFqEy8zxBV0FVFBORbDbRzqJ2SKXM; ntes_utid=tid._.uc7e2Ep%252F%252FPpBEwRQQUfSZCZ1gi%252BDNwD9._.0',
}
params = {
'csrf_token': '',
}
data = {
'params': 'Vp3cffwAuziqB3AQSOtL4h46zrJQ0phrBINGruiFGD86n/Y3YkNAp9FPFgU7Fn68Kbq5H1hkJZoUHCGd7DgjUuGf6it2zrIJwMNSjF4Fr2al5xUnZ5wE7KaRX7NZNazZcsXFmx5yEuPVzq24zWiER/aa94pb65h5Sdf0MHrz8pytxrr6u3ekY6JZLSMn9Aa3ovDUet/jbJKQ0w6PNzY52cx6Lpd2ebDfbWK0MfrlKeGkvUNz+HseZ3n+NfUbypptmlHKvcRWdPdxTUHhCed13FFUzPHGxerC+mhJsGYa6aQ=',
'encSecKey': 'a1bcd472f945500f162538205e1822cc39ca93b056f80ba56becb1223d5c6399976e3f7f7b10ffaae25a6d097de5dbeb8e6433f7258c9b566de315796db5240351e39975a1338a1a9876d22eab4948c398a25963156f7809fa249723bfb794ac014dba4b544199f01f7cb4aa99c70af7b1f48a4dd4c7271889f665b14f4d0df1',
}
response = requests.post(
url='https://music.163.com/weapi/comment/resource/comments/get',
params=params,
headers=headers,
data=data,
)
print(response.text)
print(type(response.text))
二、接口返回的多种处理方式
1、URL:response.url
# 请求接口的URL
print("请求的URL为:", response.url)
2、响应状态码:response.status_code
# 打印接口请求的响应状态码
print("响应状态码为:", response.status_code)
3、Cookie:response.cookies
# 打印cookie
print("接口请求的cookie为:", response.cookies)
4、响应头:response.headers
# 打印接口请求的响应头
print("接口返回的响应头为:", response.headers)
5、文本格式响应数据:response.text
# 打印文本格式响应数据
print("接口返回的文本格式响应数据为:", response.text)
6、字节码响应数据:response.content
# 打印字节码响应数据
print("字节码数据为:", response.content)
7、字节码数据编码:response.content.decode("utf-8")
如果我们打印text文本发现报错,此时需要用decode方法进行解码
# 字节码数据编码
print("给字节码数据进行编码操作:", response.content.decode("utf-8"))
8、编码方式:response.encoding
# 打印编码:假设互联网传输数据的格式是 iso-8859-1,用 utf-8 解析 iso-8859-1 的数据,是无法解析的
print("编码为:", response.encoding)
9、json数据:response.json()
# 打印json数据,打印规则:首先必须是 Json 数据结构才能够打印,如果不是 json 数据结构,会抛出 JsonDecodeError 错误
print("接口返回数据的json格式为:", response.json())
三、将接口返回写入文件
1、json.dump(response.json(), file)
with open("data.json", "w", encoding="utf-8") as file:
json.dump(response.json(), file)
2、file.write(str(response.json()))
with open("data.json", "w", encoding="utf-8") as file:
json_str = str(response.json())
file.write(json_str)