如何用Python自动点击网页的Export to Excel按钮导出多页表格?
实现iadb制裁名单表格的Excel导出方案
针对你需要导出分页表格的需求,这里提供两种可行的Python实现方案:
方法1:用Selenium模拟浏览器点击导出按钮
这种方式完全模拟用户操作,适合不熟悉接口抓包的场景,能直接触发页面的导出逻辑。
- 先安装依赖:
pip install selenium webdriver-manager
- 代码示例:
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 from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.options import Options # 配置下载路径(可选,替换为你的目标路径) chrome_options = Options() prefs = {"download.default_directory": "/Users/yourname/Downloads"} chrome_options.add_experimental_option("prefs", prefs) # 初始化浏览器 driver = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options) driver.get("https://www.iadb.org/en/transparency/sanctioned-firms-and-individuals") try: # 等待导出按钮加载完成并点击 export_button = WebDriverWait(driver, 15).until( EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'Export to Excel')]")) ) export_button.click() # 等待下载完成(手动确认后关闭浏览器) input("确认Excel下载完成后,按回车键关闭浏览器...") finally: driver.quit()
- 关键提示:
- 如果使用Firefox等其他浏览器,替换对应
webdriver和驱动管理包即可 - 用
WebDriverWait等待元素加载,避免因页面延迟导致的元素查找失败
- 如果使用Firefox等其他浏览器,替换对应
方法2:直接调用导出接口(更高效)
多数网站的导出按钮本质是触发后端接口请求,直接调用接口无需模拟浏览器,速度更快,适合批量或定时任务。
操作步骤:
- 打开浏览器开发者工具(F12),切换到「Network」标签
- 点击页面的「Export to Excel」按钮,筛选出包含
export/excel关键词的请求 - 复制请求的URL、请求头和参数,用
requests库直接请求
- 代码示例(需替换为实际抓包得到的接口信息):
import requests # 替换为抓包得到的真实导出接口URL export_url = "https://www.iadb.org/api/transparency/sanctions/export-excel" 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.iadb.org/en/transparency/sanctioned-firms-and-individuals" } # 发送请求并保存文件 response = requests.get(export_url, headers=headers) response.raise_for_status() with open("sanctioned_firms_list.xlsx", "wb") as f: f.write(response.content) print("Excel文件已成功保存!")
- 关键提示:
- 若网站有反爬验证,可能需要添加Cookie等请求头信息(从抓包结果中复制)
- 部分接口可能包含签名参数,需仔细分析请求逻辑才能正常调用
内容的提问来源于stack exchange,提问作者Giampaolo Levorato
相关产品推荐
相关产品推荐

