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

在线批量PDF爬取失败:原因分析与解决方法

PDF爬取失败的原因及修复方案

失败原因

  • 请求被网站拦截:很多网站会校验请求的User-Agent字段,你的代码直接用requests.get()发送请求,没有设置合法的用户代理标识,被服务器判定为非浏览器请求,返回403或其他错误,导致PDF下载失败。
  • 异常捕获太宽泛:代码里用except:捕获所有异常,没法定位具体问题(比如请求超时、PDF格式异常、权限限制等),排查故障困难。
  • 变量作用域问题:text_content定义在循环内的try块里,一旦请求失败,这个变量就没被初始化,最后打印会报错;同时多URL场景下,每次循环会覆盖之前的提取结果。

修复后的代码

import fitz
import requests
import io
import re

# 模拟浏览器的请求头,避免被反爬拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}

url_pdf = [
    "https://wcsecure.weblink.com.au/pdf/ASN/02528656.pdf",
    "https://livent.com/wp-content/uploads/2022/07/Livent_2021SustainabilityReport-English.pdf",
    "https://www.minviro.com/wp-content/uploads/2021/10/Shifting-the-lens.pdf"
]

# 用字典存储每个URL对应的提取结果,避免覆盖
all_text_content = {}

for url in url_pdf:
    print(f"正在处理: {url}")
    try:
        # 带请求头发送请求,设置超时防止卡住
        response = requests.get(url, headers=headers, timeout=15)
        # 检查请求是否成功,4xx/5xx状态码直接抛出异常
        response.raise_for_status()
        
        pdf_file = io.BytesIO(response.content)
        pdf_reader = fitz.open(stream=pdf_file, filetype="pdf")
        
        text_content = ''
        for page in range(pdf_reader.page_count):
            text_content += pdf_reader.load_page(page).get_text()
        
        all_text_content[url] = text_content
        print(f"{url} 文本提取成功")
        
    except requests.exceptions.RequestException as e:
        print(f"{url} 请求失败: {str(e)}")
    except Exception as e:
        print(f"{url} 处理失败: {str(e)}")

# 输出所有成功提取的内容(这里只打印前500字符,避免输出过多)
for url, content in all_text_content.items():
    print(f"\n--- {url} 提取内容预览 ---")
    print(content[:500])

关键修改说明

  • 添加请求头:设置User-Agent模拟浏览器请求,绕过网站基础反爬机制。
  • 细化异常捕获:拆分请求相关异常和其他异常,明确错误类型,方便排查问题。
  • 校验请求状态:用response.raise_for_status()及时发现4xx/5xx等请求错误。
  • 优化结果存储:用字典关联URL和提取内容,避免多URL场景下的结果覆盖。
  • 设置超时:timeout=15避免请求长时间无响应卡住程序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:02:46