Python能否使用requests库通过POST请求爬取接口返回的JSON数据
你可以通过构造和浏览器一致的POST请求直接拿到对应JSON数据,具体实现逻辑如下:
- 首先从浏览器开发者工具的请求详情页,复制请求头里的
User-Agent、Referer、Content-Type三个核心参数,再复制请求体(Payload/Form Data)里的所有请求参数 - 用
requests.post方法传入目标地址、请求头、请求参数发起请求 - 直接调用响应对象的
json()方法即可获得解析为Python字典的接口数据
参考代码如下:
import requests # 替换为你自己从浏览器抓包得到的请求头 request_headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36", "Referer": "https://www.otpbanka.hr/tecajna-lista", "Content-Type": "application/x-www-form-urlencoded" } # 替换为你抓包得到的实际请求参数 request_data = { # 按你实际抓到的表单参数填写,比如日期、查询类型这类参数 } response = requests.post( url="https://www.otpbanka.hr/otp/ajax/exchange", headers=request_headers, data=request_data ) # 校验请求是否成功 if response.status_code == 200: json_data = response.json() print(json_data) else: print(f"请求失败,状态码:{response.status_code}")
如果请求失败,就对照浏览器的请求头,把所有你抓到的请求头都补充到request_headers里,包括Cookie、Accept等参数,保证请求和浏览器发送的内容完全一致,就能正常获取数据。
内容的提问来源于stack exchange,提问作者sitni
相关产品推荐
相关产品推荐

