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

Python使用requests.get下载SEC的PDF文件随机损坏如何解决?

SEC网站PDF批量下载损坏解决方案
  • 添加随机请求延迟
    SEC对高频请求限制严格,每次请求之间加入1~3秒的随机等待,模拟人工访问频率,避免触发频次反爬规则。
  • 完善请求头配置
    仅配置User-Agent不足以模拟正常浏览器请求,需补充Referer、Accept、Accept-Encoding等标准请求头字段,降低被识别为爬虫的概率。
  • 增加请求校验与重试机制
    原代码未判断请求状态码、未校验返回内容完整性,遇到反爬拦截返回非200状态码时仍直接写入内容,是文件损坏的核心原因之一。需增加状态码判断、返回内容长度校验,请求失败时自动重试2~3次。
  • 使用会话保持请求上下文
    采用requests.Session()发起请求,自动管理请求Cookie与连接状态,行为更接近真实浏览器访问。
from pathlib import Path
import requests
import time
import random
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

# 配置请求重试规则
retry_strategy = Retry(
    total=3,
    backoff_factor=1,
    status_forcelist=[429, 500, 502, 503, 504, 403]
)
adapter = HTTPAdapter(max_retries=retry_strategy)

# 初始化会话,配置请求头
session = requests.Session()
session.mount("https://", adapter)
session.mount("http://", adapter)
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
    'Referer': 'https://www.sec.gov/',
    'Accept': 'application/pdf,*/*;q=0.9',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
    'Connection': 'keep-alive'
}
session.headers.update(headers)

url_list = [
    # 填入对应的7个SEC PDF链接即可
]

n_files = 0
for eachurl in url_list:
    n_files += 1
    # 随机延迟1-3秒
    time.sleep(random.uniform(1, 3))
    response = session.get(eachurl, timeout=30)
    # 校验请求成功
    if response.status_code == 200:
        # 校验内容长度,避免下载不全
        content_length = int(response.headers.get('Content-Length', 0))
        if content_length and len(response.content) != content_length:
            print(f"文件{n_files}下载不完整,重新尝试")
            response = session.get(eachurl, timeout=30)
        filename = Path(f"{n_files}.pdf")
        filename.write_bytes(response.content)
        print(f"文件{n_files}下载完成")
    else:
        print(f"文件{n_files}下载失败,状态码:{response.status_code}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:48:03