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

Python如何爬取提交表单后自动下载的XML文件?

提交表单后自动下载XML文件实现方案

你当前编写的代码已经完成了表单参数选择的逻辑,只需为Chrome浏览器添加下载偏好配置,即可实现提交表单后自动将XML文件保存到本地指定路径,无需手动确认下载操作。

核心配置修改点

  • 提前创建本地存储XML的文件夹,配置到Chrome的默认下载路径参数中
  • 禁用下载确认弹窗,跳过系统保存提示
  • 允许站点自动下载多文件,避免多XML下载时的权限拦截

完整可运行代码

import os
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.select import Select

# 请修改为你自己的本地存储路径,提前创建好该文件夹
download_path = r"C:\Users\你的用户名\Downloads\unemploy_xml"
if not os.path.exists(download_path):
    os.makedirs(download_path)

# 配置Chrome下载参数
chrome_options = webdriver.ChromeOptions()
prefs = {
    "download.default_directory": download_path,  # 设置默认下载路径
    "download.prompt_for_download": False,  # 禁用下载弹窗
    "download.directory_upgrade": True,
    "safebrowsing.enabled": True,  # 允许下载非安全标记的文件
    "profile.default_content_setting_values.automatic_downloads": 1  # 允许多文件自动下载
}
chrome_options.add_experimental_option("prefs", prefs)

# 初始化driver,这里用你本地的chromedriver路径
service = Service(r"C:\Program Files (x86)\chromedriver.exe")
driver = webdriver.Chrome(service=service, options=chrome_options)

url = 'https://oui.doleta.gov/unemploy/claims.asp'
driver.implicitly_wait(10)
driver.get(url)

# 原有表单填写逻辑
driver.find_element_by_css_selector('input[name="level"][value="state"]').click()
Select(driver.find_element_by_name('strtdate')).select_by_value('2020')
Select(driver.find_element_by_name('enddate')).select_by_value('2022')
driver.find_element_by_css_selector('input[name="filetype"][value="xml"]').click()
select = Select(driver.find_element_by_id('states'))

# 全选所有州
for opt in select.options:
    opt.click()

# 提交表单
driver.find_element_by_css_selector('input[name="submit"][value="Submit"]').click()

# 等待下载完成,可根据文件大小调整等待时间,也可以写文件夹监控逻辑判断文件是否下载完成
time.sleep(30)

# 下载完成后关闭浏览器
driver.quit()

注:如果你使用的是Selenium 3.x版本,可删除Service相关代码,直接将驱动路径传入executable_path参数即可:
driver = webdriver.Chrome(executable_path=r"C:\Program Files (x86)\chromedriver.exe", options=chrome_options)

下载完成后的XML处理

文件全部下载到指定文件夹后,你可以使用Python内置的xml.etree.ElementTree库解析XML内容,实现数据提取、格式转换等操作。

简单解析示例:

import xml.etree.ElementTree as ET
import os

for file_name in os.listdir(download_path):
    if file_name.endswith('.xml'):
        file_path = os.path.join(download_path, file_name)
        tree = ET.parse(file_path)
        root = tree.getroot()
        # 按节点结构提取你需要的字段即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:36:05