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

Python网页抓取:如何下载目标页面文件并解决PdfReadError报错

解决方案

你的问题出在错误地将网页HTML内容当作PDF文件处理:你请求的https://asn.scientificposters.com/epsAbstractASN.cfm?id=6是普通网页,返回的是HTML代码而非PDF流,所以PyPDF2会报EOF标记找不到的错误。

正确的做法是直接请求你提到的那个图片对应的apprizr.cfm链接,这个接口实际返回的是海报文件(PDF/图片格式)。

修正后的代码

import requests

headers = {
    "accept": "*/*",
    "accept-encoding": "gzip, deflate, br, zstd",
    "accept-language": "en-US,en;q=0.9,en-IN;q=0.8",
    "priority": "u=1, i",
    "referer": "https://asn.scientificposters.com/epsAbstractASN.cfm?id=6",
    "sec-ch-ua": "\"Not)A;Brand\";v=\"99\", \"Microsoft Edge\";v=\"127\", \"Chromium\";v=\"127\"",
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "\"Windows\"",
    "sec-fetch-dest": "empty",
    "sec-fetch-mode": "cors",
    "sec-fetch-site": "same-origin",
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"
}

# 直接请求海报文件接口
target_url = "https://asn.scientificposters.com/apprizr.cfm?C1A%2F12Y8hALzGGa7XK43k6yc%2BvAzbBWUzMVrtMoqM6BBIsnQV7bYHul%2BzTSg5vOqmtrKjRzudgo%3D"
response = requests.get(target_url, headers=headers, allow_redirects=True)

# 处理响应并保存文件
if response.status_code == 200:
    # 根据响应头判断文件类型
    content_type = response.headers.get('Content-Type')
    if 'pdf' in content_type:
        filename = "poster.pdf"
    elif 'image/png' in content_type:
        filename = "poster.png"
    elif 'image/jpeg' in content_type:
        filename = "poster.jpg"
    else:
        filename = "poster.pdf"  # 默认保存为PDF(多数场景下是该格式)
    
    with open(filename, 'wb') as f:
        f.write(response.content)
    print(f"文件已保存为 {filename}")
else:
    print(f"请求失败,状态码:{response.status_code}")

关键说明

  • 把referer设为原网页地址,避免服务器拦截请求
  • 开启allow_redirects=True,处理接口可能的内部重定向
  • 通过Content-Type自动识别文件类型,保证保存格式准确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 23:03:21