Python requests访问sourceforge下载链接返回乱码,其他网站访问正常
原因分析
你请求的https://sourceforge.net/projects/easyminer/files/latest/download是SourceForge的自动跳转下载地址,默认返回的是对应软件的二进制安装包内容,并非HTML文本,直接将二进制内容按字符串输出就会出现乱码。
解决方案
场景1:你需要获取的是项目文件列表的HTML内容
请将请求地址替换为文件列表页地址:https://sourceforge.net/projects/easyminer/files/
该地址返回的是正常HTML文本,不会出现乱码。
场景2:你确实需要请求该下载地址
- 若要验证返回内容类型,可打印响应头字段确认:
输出为print(resp.headers.get('Content-Type'))application/octet-stream类的二进制类型即可确认返回的是安装包,如需保存文件直接写入resp.content到本地即可。 - 若确认返回内容为HTML但仍乱码,手动指定编码后再读取:
resp.encoding = resp.apparent_encoding print(resp.text) - 若存在压缩格式未自动解压的情况,手动处理压缩内容:
import gzip html_content = gzip.decompress(resp.content).decode('utf-8') print(html_content)
内容的提问来源于stack exchange,提问作者Mimasik
相关产品推荐
相关产品推荐

