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

如何用Python脚本自动下载ECHA候选列表无直接链接的CSV?

ECHA候选列表CSV自动化下载解决方案

方案一:构造合规的HTTP请求(基于requests库)

直接用抓来的链接下载失败,大多是因为缺少必要的请求头、会话信息或参数,按以下步骤解决:

  1. 重新抓取请求详情
    打开开发者工具(F12)的「网络」标签,触发CSV下载动作,找到对应请求后记录:
  • 请求的URL、请求方法(GET/POST)
  • 请求头里的User-Agent、Referer、Accept字段
  • 若为POST请求,复制请求体中的参数
  1. 用requests构造请求并保存文件
    示例代码(GET请求场景):
import requests

# 替换为你抓到的CSV请求URL
csv_request_url = "https://echa.europa.eu/api/candidate-list/export.csv"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36",
    "Referer": "https://echa.europa.eu/es/candidate-list-table",
    "Accept": "text/csv,*/*;q=0.9"
}

# 初始化会话维持网站状态
session = requests.Session()
# 先访问目标页面获取必要会话信息
session.get("https://echa.europa.eu/es/candidate-list-table", headers=headers)

# 发送CSV请求
response = session.get(csv_request_url, headers=headers)
# 检查请求是否成功
response.raise_for_status()

# 保存到本地文件
with open("echa_candidate_list.csv", "wb") as csv_file:
    csv_file.write(response.content)

如果是POST请求,需添加data参数传入抓取到的表单数据。

方案二:模拟浏览器点击下载(基于Selenium)

如果网站下载是JavaScript触发(无直接API链接),用Selenium模拟用户操作更可靠:

  1. 依赖准备
    安装Selenium和对应浏览器驱动(如ChromeDriver,需与浏览器版本匹配):
pip install selenium
  1. 编写模拟下载脚本
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import os
import time

# 设置下载目录
download_path = os.path.abspath("./echa_downloads")
os.makedirs(download_path, exist_ok=True)

# 配置Chrome浏览器选项
chrome_options = webdriver.ChromeOptions()
prefs = {
    "download.default_directory": download_path,
    "download.prompt_for_download": False,
    "download.directory_upgrade": True
}
chrome_options.add_experimental_option("prefs", prefs)

# 启动浏览器并访问页面
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://echa.europa.eu/es/candidate-list-table")

# 等待下载按钮加载完成并点击(替换为实际的按钮选择器)
try:
    download_btn = WebDriverWait(driver, 15).until(
        EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'Export as CSV')]"))
    )
    download_btn.click()
    # 等待文件下载完成(根据文件大小调整时长)
    time.sleep(8)
finally:
    driver.quit()

注意事项

  • 替换代码中的按钮选择器:通过开发者工具找到下载按钮的XPath或CSS选择器,确保定位准确。
  • 避免频繁请求:添加适当延时,防止被网站判定为爬虫封禁IP。
  • 定期验证:网站接口或页面元素可能更新,需定期检查脚本是否正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:07:47