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

如何编写程序控制浏览器自动完成VIN查询及PDF保存?

自动处理VIN码网页操作的实现方案

核心实现方向

优先选择浏览器自动化工具模拟人工操作(输入VIN、点击搜索、保存PDF),这种方式无需深入了解网页底层逻辑,对编程新手友好。如果目标网站提供公开API,也可以直接调用API获取数据后生成PDF,但该方案依赖网站支持,新手上手难度更高,因此首推浏览器自动化方案。

适合新手的工具选择

  • Selenium:最主流的浏览器自动化库,支持Chrome、Firefox等所有主流浏览器,Python版本语法简洁,社区资源丰富,遇到问题容易找到解决方案。
  • Playwright:微软推出的新一代自动化工具,自带浏览器驱动(无需手动下载配置),API设计更直观,支持无头模式(后台静默运行,不显示浏览器窗口),适合快速搭建自动化流程。

以下以Selenium为例,详细说明实现步骤和代码示例。

控制浏览器的具体步骤

1. 环境准备

  • 安装Python,执行pip install selenium安装Selenium库。
  • 下载对应浏览器的驱动(比如Chrome的ChromeDriver,需与浏览器版本匹配),将驱动文件放到Python安装目录或系统PATH路径下。

2. 自动化流程拆解

  • 初始化浏览器实例,打开目标网站。
  • 定位VIN输入框,清除原有内容后输入目标VIN码。
  • 定位搜索按钮并点击触发搜索。
  • 等待搜索结果页面加载完成(避免程序因页面未加载报错)。
  • 将结果页面保存为PDF文件。
  • 循环处理剩余两个网站。

3. 示例代码

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 time

# 待处理的VIN码
vin_code = "你的VIN码"
# 三个目标网站地址(替换为实际网址)
target_sites = ["https://site1.com/vin-search", "https://site2.com/check-vin", "https://site3.com/vin-lookup"]

# 初始化Chrome浏览器
driver = webdriver.Chrome()

for site_url in target_sites:
    try:
        # 访问目标网站
        driver.get(site_url)
        
        # 等待VIN输入框加载完成(替换为实际输入框的定位规则,可通过浏览器F12开发者工具查看元素属性)
        vin_input = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "vin-input"))
        )
        # 输入VIN码
        vin_input.clear()
        vin_input.send_keys(vin_code)
        
        # 等待搜索按钮可点击并触发搜索(替换为实际搜索按钮的定位规则)
        search_btn = WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.XPATH, "//button[text()='搜索']"))
        )
        search_btn.click()
        
        # 等待搜索结果页面加载完成(替换为结果页面的特征元素定位)
        WebDriverWait(driver, 15).until(
            EC.presence_of_element_located((By.CLASS_NAME, "vin-result"))
        )
        
        # 将页面保存为PDF(利用Chrome的DevTools协议)
        pdf_config = {
            "landscape": False,
            "displayHeaderFooter": False,
            "printBackground": True
        }
        pdf_data = driver.execute_cdp_cmd("Page.printToPDF", pdf_config)
        # 生成带网站标识的文件名
        site_name = site_url.split("//")[1].split(".")[0]
        with open(f"{site_name}_{vin_code}.pdf", "wb") as f:
            f.write(bytes.fromhex(pdf_data['data']))
        
        print(f"已完成 {site_url} 的PDF保存")
    except Exception as e:
        print(f"处理 {site_url} 时出错: {str(e)}")
    # 每个网站处理后短暂等待,避免触发反爬机制
    time.sleep(2)

# 关闭浏览器
driver.quit()

关键注意事项

  • 元素定位:如果ID、Name等属性不好找,可使用XPATH或CSS选择器(比如By.CSS_SELECTOR, "[name='vin']"),通过浏览器F12开发者工具右键元素选择“复制XPATH/CSS选择器”快速获取定位规则。
  • 反爬规避:部分网站会检测自动化工具,可给浏览器添加配置禁用自动化标识:
    options = webdriver.ChromeOptions()
    options.add_argument("--disable-blink-features=AutomationControlled")
    driver = webdriver.Chrome(options=options)
    
  • 批量处理:如果有多个VIN码,可将VIN码存入列表,在外层增加循环遍历每个VIN。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:25:29