You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python的requests/httpx模块下载PDF?解决文件无法读取问题

解决二进制文件下载后无法读取的问题

你的代码核心问题是把二进制文件当成文本处理,直接破坏了原始文件的字节结构,导致阅读器无法识别。具体错误点:

  • 对二进制的文件内容调用.decode("ascii"),ASCII解码会丢失非ASCII字节的信息,彻底损坏文件
  • 打开文件时用了文本模式w,应该用二进制写入模式wb
  • 代码存在变量名错误:httpx.get(...).content.decode(...)的结果没赋值给content,后续却引用了这个未定义的变量

修正后的代码:

import httpx

URL = "http://62.182.86.140/main/0/aee7239ffcf7871e1d6687ced1215e22/Markus%20Nix%20-%20Exploring%20Python-Entwickler%20%282005%29.djvu"
# 直接获取二进制内容,不要解码
content = httpx.get(URL, timeout=20.0).content

# 用二进制模式写入文件
with open("./example.djvu", "wb") as f:
    f.write(content)

另外注意:你下载的文件实际是.djvu格式,不是PDF,建议把文件名改成对应格式,避免阅读器识别混淆。

wget能正常下载是因为它直接保存服务器返回的原始二进制字节流,没有做任何文本编码转换,所以文件结构完整。

内容的提问来源于stack exchange,提问作者pwrljzkkdup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 13:45:26