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

Python从URL列表下载PDF失败:downloadUrl字段值为None

解决字典列表中downloadUrl为None的PDF下载问题
  • 先确认字典键名是否正确
    很多时候问题出在键名拼写/大小写错误上,比如实际键名是downloadurl(全小写)、download_url(带下划线)而非downloadUrl。直接打印每个字典的所有键来验证:

    for item in your_dict_list:
        print(item.keys())
    

    如果看不到downloadUrl,说明你用错了键名。

  • 检查原始数据的完整性
    键名没问题但值为None,大概率是你获取字典列表的环节出了问题(比如爬取时解析错误、接口返回字段为空)。打印几个完整的字典看看:

    # 打印前3个字典确认数据
    for idx in range(3):
        print(f"Item {idx}: {your_dict_list[idx]}")
    

    观察除downloadUrl外的字段是否正常,判断是数据本身缺失还是解析逻辑错误。

  • 验证目标链接的实际存在性
    如果你坚信链接存在,手动去数据来源(网页/接口)中查找对应PDF的真实链接:

    • 若链接是相对路径,需要拼接域名(比如base_url + relative_path)
    • 若链接是动态加载的,静态解析(比如BeautifulSoup直接抓)会拿不到,得用Selenium或者分析接口请求
  • 调试下载代码逻辑
    确保你的下载代码里正确处理了空值,示例代码如下:

    import requests
    
    for item in your_dict_list:
        pdf_url = item.get("downloadUrl")
        # 先判断url是否有效
        if not pdf_url or not isinstance(pdf_url, str):
            print(f"无效链接: {pdf_url}")
            continue
        try:
            resp = requests.get(pdf_url, timeout=10)
            resp.raise_for_status()  # 抛出HTTP错误
            # 用字典里的其他字段命名文件,比如title
            filename = f"{item.get('title', 'untitled')}.pdf"
            with open(filename, "wb") as f:
                f.write(resp.content)
            print(f"已下载: {filename}")
        except Exception as e:
            print(f"下载失败 {pdf_url}: {str(e)}")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 20:22:12