Python读取远程JSON遇403及TypeError问题求助
问题解决步骤
1. 解决403 Forbidden错误
服务器返回403是因为默认urllib请求的User-Agent标识太特殊,被服务器反爬机制拦截。解决方法是在请求头里添加模拟浏览器的User-Agent,比如Chrome的标识:
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' }
将这个请求头传入urllib.request.Request对象发起请求即可。
2. 解决TypeError字节索引错误
urllib.urlopen()返回的响应是字节流,直接尝试用字符串键索引会触发类型错误。必须先把字节流解码成UTF-8编码的字符串,再用json.loads()解析为Python字典:
import json from urllib import request # 构造带请求头的请求 req = request.Request('https://你的LEMP服务器地址/目标文件.json', headers=headers) response = request.urlopen(req) # 解码字节流并解析JSON json_str = response.read().decode('utf-8') data = json.loads(json_str) # 正常访问数据示例 team_name = data['队名'] stat_value = data['统计值'] print(team_name, stat_value)
额外检查点
- 确认LEMP服务器上的JSON文件权限正确(比如设置
chmod 644),保证Nginx能正常返回该文件 - 验证服务器上的JSON文件无语法错误(可使用
jsonlint工具检查)
内容的提问来源于stack exchange,提问作者user19925544
相关产品推荐
相关产品推荐

