当前位置: 代码网 > it编程>前端脚本>Python > Python实现自动化表单填写功能

Python实现自动化表单填写功能

2025年03月23日 Python 我要评论
1.selenium简介selenium是一个功能强大的浏览器自动化工具,支持多种浏览器(如chrome、firefox、edge等)。它可以模拟用户操作,如点击按钮、填写表单、处理javascrip

1. selenium

简介

selenium 是一个功能强大的浏览器自动化工具,支持多种浏览器(如chrome、firefox、edge等)。它可以模拟用户操作,如点击按钮、填写表单、处理javascript动态内容等。

适用场景

  • 需要与页面进行复杂交互(如点击按钮、选择下拉菜单)。
  • 需要处理javascript动态加载的内容。
  • 需要跨浏览器测试。

示例代码

from selenium import webdriver
from selenium.webdriver.common.by import by
import time

# 启动浏览器
driver = webdriver.chrome(executable_path='path/to/chromedriver')

# 打开表单页面
driver.get('https://example.com/form')

# 填写表单
driver.find_element(by.name, 'username').send_keys('john doe')
driver.find_element(by.name, 'email').send_keys('johndoe@example.com')
driver.find_element(by.name, 'password').send_keys('securepassword123')

# 提交表单
driver.find_element(by.xpath, '//button[@type="submit"]').click()

# 关闭浏览器
time.sleep(5)
driver.quit()

优点

  • 支持多种浏览器。
  • 功能强大,可以处理复杂的交互和动态内容。

缺点

  • 需要安装浏览器驱动。
  • 执行速度较慢。

2. playwright

简介

playwright 是一个现代化的浏览器自动化工具,支持chromium、firefox和webkit浏览器。它比selenium更高效,api也更丰富。

适用场景

  • 需要处理复杂的javascript动态内容。
  • 需要跨浏览器测试。
  • 需要高效的自动化操作。

示例代码

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # 启动浏览器
    browser = p.chromium.launch(headless=false)
    page = browser.new_page()

    # 打开表单页面
    page.goto('https://example.com/form')

    # 填写表单
    page.fill('input[name="username"]', 'john doe')
    page.fill('input[name="email"]', 'johndoe@example.com')
    page.fill('input[name="password"]', 'securepassword123')
    page.click('input[type="submit"]')

    # 关闭浏览器
    browser.close()

优点

  • 支持多种浏览器。
  • 执行速度快,api丰富。
  • 可以处理复杂的交互和动态内容。

缺点

  • 需要安装浏览器驱动。
  • 学习曲线略高。

3. requests + beautifulsoup

简介

requests 是一个http库,用于发送http请求。beautifulsoup 是一个html解析库,用于提取网页中的数据。结合两者可以实现简单的表单提交。

适用场景

  • 静态网页(没有javascript动态加载内容)。
  • 表单提交是通过http post/get请求完成的。

示例代码

import requests
from bs4 import beautifulsoup

# 获取表单页面
session = requests.session()
response = session.get('https://example.com/form')
soup = beautifulsoup(response.text, 'html.parser')

# 提取csrf令牌
csrf_token = soup.find('input', {'name': 'csrf_token'})['value']

# 构造表单数据
form_data = {
    'username': 'john doe',
    'email': 'johndoe@example.com',
    'password': 'securepassword123',
    'csrf_token': csrf_token
}

# 提交表单
response = session.post('https://example.com/submit', data=form_data)

# 检查提交结果
if response.status_code == 200:
    print('表单提交成功!')
else:
    print('表单提交失败!')

优点

  • 轻量级,不需要启动浏览器。
  • 适合处理简单的表单提交。

缺点

  • 无法处理javascript动态内容。
  • 无法模拟复杂的用户交互。

4. mechanicalsoup

简介

mechanicalsoup 是一个基于requestsbeautifulsoup的库,专门用于自动化表单提交。它比纯requests更简单易用。

适用场景

  • 简单的表单提交任务。
  • 不需要处理javascript动态内容。

示例代码

import mechanicalsoup

# 创建浏览器对象
browser = mechanicalsoup.browser()

# 打开表单页面
page = browser.get('https://example.com/form')
form = page.soup.select_one('form')

# 填写表单
form.select_one('input[name="username"]')['value'] = 'john doe'
form.select_one('input[name="email"]')['value'] = 'johndoe@example.com'
form.select_one('input[name="password"]')['value'] = 'securepassword123'

# 提交表单
response = browser.submit(form, page.url)

# 检查提交结果
if response.status_code == 200:
    print('表单提交成功!')
else:
    print('表单提交失败!')

优点

  • 简单易用,适合快速实现表单提交。
  • 不需要启动浏览器。

缺点

  • 无法处理javascript动态内容。
  • 功能相对有限。

5. pyppeteer

简介

pyppeteer 是一个python版的puppeteer,用于控制无头浏览器(headless chrome)。它类似于playwright,但更专注于chromium浏览器。

适用场景

  • 需要处理复杂的javascript动态内容。
  • 需要无头浏览器支持。

示例代码

import asyncio
from pyppeteer import launch

async def fill_form():
    # 启动浏览器
    browser = await launch(headless=false)
    page = await browser.newpage()

    # 打开表单页面
    await page.goto('https://example.com/form')

    # 填写表单
    await page.type('input[name="username"]', 'john doe')
    await page.type('input[name="email"]', 'johndoe@example.com')
    await page.type('input[name="password"]', 'securepassword123')
    await page.click('input[type="submit"]')

    # 关闭浏览器
    await browser.close()

# 运行异步任务
asyncio.get_event_loop().run_until_complete(fill_form())

优点

  • 支持无头浏览器。
  • 可以处理复杂的交互和动态内容。

缺点

  • 需要异步编程。
  • 仅支持chromium浏览器。

6. robobrowser

简介

robobrowser 是一个简单的库,结合了requestsbeautifulsoup,适合快速实现表单提交。

适用场景

  • 简单的表单提交任务。
  • 不需要处理javascript动态内容。

示例代码

from robobrowser import robobrowser

# 创建浏览器对象
browser = robobrowser()

# 打开表单页面
browser.open('https://example.com/form')

# 获取表单
form = browser.get_form()

# 填写表单
form['username'].value = 'john doe'
form['email'].value = 'johndoe@example.com'
form['password'].value = 'securepassword123'

# 提交表单
browser.submit_form(form)

# 检查提交结果
if browser.response.status_code == 200:
    print('表单提交成功!')
else:
    print('表单提交失败!')

优点

  • 简单易用。
  • 不需要启动浏览器。

缺点

  • 无法处理javascript动态内容。
  • 功能有限。

横向比较

工具是否需要浏览器是否支持javascript是否支持多浏览器学习曲线适用场景
selenium中等复杂交互、跨浏览器测试
playwright中等复杂交互、高效自动化
requests + bs4简单表单提交
mechanicalsoup简单表单提交
pyppeteer否(仅chromium)中等复杂交互、无头浏览器支持
robobrowser简单表单提交

总结

  • 如果需要处理复杂的交互和动态内容,推荐使用playwrightselenium
  • 如果只需要简单的表单提交,可以使用mechanicalsouprobobrowser
  • 如果不想启动浏览器,可以使用requests + beautifulsoup

以上就是python实现自动化表单填写功能的详细内容,更多关于python自动化表单填写的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com