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

Espacenet无直接链接文件自动化下载求助(受限VM环境)

解决Espacenet筛选结果自动化下载问题(无WebDriver/二进制依赖)

核心逻辑

Espacenet的下载功能依赖会话验证和动态生成的请求参数,看不到直接下载链接是因为请求由前端动态构造,且必须携带有效会话信息才能通过服务器校验。

具体实现步骤

1. 获取会话Cookie与CSRF Token

首先需要访问目标搜索页面,获取服务器生成的会话Cookie和页面内嵌的CSRF Token——这两个是后续请求通过验证的关键:

# 用curl快速获取Cookie和CSRF Token
curl -c cookies.txt -s "https://worldwide.espacenet.com/patent/search?q=cpc%20%3D%20\"Y02B30%2F12\"" | grep -o 'name="csrfToken" value="[^"]*"' | cut -d '"' -f4 > csrf-token.txt

或者用Python实现:

import requests
from bs4 import BeautifulSoup

# 初始化会话,自动保持Cookie
session = requests.Session()
search_url = "https://worldwide.espacenet.com/patent/search?q=cpc%20%3D%20\"Y02B30%2F12\""
response = session.get(search_url)

# 解析页面提取CSRF Token
soup = BeautifulSoup(response.text, "html.parser")
csrf_token = soup.find("input", {"name": "csrfToken"})["value"]

2. 构造下载请求

Espacenet的下载接口为/patent/search/download,需要携带搜索参数、CSRF Token和格式指定参数,直接用会话发送POST请求即可:

download_url = "https://worldwide.espacenet.com/patent/search/download"
payload = {
    "q": 'cpc = "Y02B30/12"',  # 和原搜索查询一致
    "csrfToken": csrf_token,
    "format": "csv",  # 可选excel、xml等格式
    # 若有额外筛选条件,添加对应参数(比如Filter面板中选中的条件ID)
}

# 模拟浏览器请求头,避免被拦截
headers = {
    "Accept": "application/octet-stream",
    "Content-Type": "application/x-www-form-urlencoded",
    "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"
}

# 发送请求并保存文件
response = session.post(download_url, data=payload, headers=headers)
with open("espacenet_results.csv", "wb") as f:
    f.write(response.content)

3. 关键注意点

  • 会话Cookie有效期较短,每次执行下载前都需要重新获取
  • 若遇到Cloudflare验证,可在会话中添加更贴近真实浏览器的请求头,或短暂等待后重试
  • Postman之前失败的原因大概率是未完整携带会话Cookie和CSRF Token,用会话保持工具(如requests.Session)可解决该问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 22:08:23