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

使用Python requests库下载特定URL PDF无内容问题求助

问题分析与解决

核心问题:代码逻辑错误导致内容丢失

你这段代码里有个关键错误:开启stream=True后,你先调用了next(response.iter_content(10))读取了10字节内容,这会把响应流的指针移到这10字节之后,后续再调用response.content时,剩余内容已经被消费完了,所以写入文件的是空内容。

可能的网站相关因素

也不排除目标网站的反爬策略影响:

  • 部分网站会检测请求头完整性,除了User-Agent,可能还需要Referer、Accept等字段
  • 有些网站会对频繁请求做限制,或者需要Cookie验证才能正常获取资源

修复后的代码

把多余的iter_content调用删掉,直接写入响应内容即可:

import requests

pdf_url="https://www.npci.org.in/PDF/nach/circular/2015-16/Circular_No_126.pdf"
pdf_title="test"

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0"}

response = requests.get(pdf_url, headers=headers, stream=True)
if response.status_code == 200:
    with open(f"{pdf_title}.pdf", "wb") as fd:
        fd.write(response.content)

如果要保留流式写入(适合大文件),可以改成这样:

import requests

pdf_url="https://www.npci.org.in/PDF/nach/circular/2015-16/Circular_No_126.pdf"
pdf_title="test"

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0"}

response = requests.get(pdf_url, headers=headers, stream=True)
if response.status_code == 200:
    with open(f"{pdf_title}.pdf", "wb") as fd:
        for chunk in response.iter_content(chunk_size=1024):
            fd.write(chunk)

额外排查建议

如果修复后还是无法正常下载:

  • 打印response.text查看返回内容,确认是不是反爬提示的HTML页面
  • 复制URL到浏览器打开,确认目标PDF文件本身是否存在
  • 补充更多请求头字段,完全模拟真实浏览器的请求参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:32:58