Python请求JSON格式数据时参数被忽略返回HTML,如何解决?
解决方法:添加浏览器请求头
服务器会根据请求中的User-Agent字段识别请求来源,你当前用urllib.request.urlopen发起的请求,默认的User-Agent会被服务器判定为非浏览器客户端,因此忽略format=json参数,返回HTML内容。
只需在请求中添加模拟浏览器的请求头即可获取JSON数据,修改后的代码如下:
import urllib.request import json # 构造请求头,模拟Chrome浏览器 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } # 创建带请求头的Request对象 req = urllib.request.Request('http://ws-old.parlament.ch/factions?format=json', headers=headers) response = urllib.request.urlopen(req) response_text = response.read() # 解析为JSON对象并输出 data = json.loads(response_text) print(data)
关键说明
- 通过
urllib.request.Request对象携带自定义请求头,让服务器认为请求来自浏览器 - 你也可以替换成其他常见浏览器的User-Agent字符串,效果一致
内容的提问来源于stack exchange,提问作者Ivo
相关产品推荐
相关产品推荐

