白骑士的Python教学实战项目篇 4.2 自动化脚本

系列目录

上一篇:白骑士的Python教学实战项目篇 4.1 数据分析与可视化

        在现代编程中,自动化脚本是一个非常重要的应用领域。自动化可以帮助我们减少重复性工作,提高工作效率。在这一篇中,我们将介绍如何使用Selenium进行网页自动化,使用BeautifulSoup进行网页抓取,并通过一个实际项目展示如何实现一个自动化表单提交脚本。

使用Selenium进行网页自动化

        Selenium是一个强大的工具,用于自动化Web应用的测试。它提供了一个功能强大的API,可以控制浏览器进行各种操作,如点击按钮、输入文本、截屏等。Selenium支持多种浏览器,包括Chrome、Firefox、Safari等。

安装Selenium

        首先,我们需要安装Selenium库和浏览器驱动。以Chrome浏览器为例,我们需要安装ChromeDriver:

pip install selenium

然后下载并安装ChromeDriver,可以在ChromeDriver官网找到适合你系统的版本。

使用Selenium的基本步骤

  1. 导入Selenium库
  2. 初始化WebDriver
  3. 打开网页
  4. 定位元素并执行操作
  5. 关闭浏览器

        以下是一个简单的示例代码,演示如何使用Selenium打开一个网页并进行一些基本操作:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys


# 初始化WebDriver
driver = webdriver.Chrome()

# 打开网页
driver.get("https://www.example.com")

# 查找元素并进行操作
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Python")
search_box.send_keys(Keys.RETURN)

# 截图保存
driver.save_screenshot("screenshot.png")

# 关闭浏览器
driver.quit()

        在这个示例中,我们使用Selenium打开了一个网页,找到搜索框输入“Python”,然后提交搜索,并截取屏幕截图保存到本地。

使用BeautifulSoup进行网页抓取

        BeautifulSoup是一个Python库,用于从HTML和XML文件中提取数据。它提供了简洁的API,方便解析和遍历HTML文档,特别适合进行网页抓取。

安装BeautifulSoup

        BeautifulSoup需要和HTML解析器一起使用,通常我们会选择 ‘lxml’ 或 ‘html.parser’。以下是安装方法:

pip install beautifulsoup4 lxml

使用BeautifulSoup的基本步骤

  1. 导入BeautifulSoup库
  2. 加载网页内容
  3. 解析HTML文档
  4. 查找和提取数据

        以下是一个简单的示例代码,演示如何使用BeautifulSoup抓取网页数据:

import requests
from bs4 import BeautifulSoup


# 发送请求获取网页内容
url = "https://www.example.com"
response = requests.get(url)
html_content = response.content

# 解析HTML文档
soup = BeautifulSoup(html_content, "lxml")

# 查找并提取数据
title = soup.title.string
print("网页标题:", title)

# 查找所有链接
links = soup.find_all("a")
for link in links:
    print(link.get("href"))

        在这个示例中,我们使用Requests库获取网页内容,然后使用BeautifulSoup解析HTML文档,提取网页标题和所有链接。

项目实践:实现一个自动化表单提交脚本

        现在,我们结合Selenium和BeautifulSoup,来实现一个自动化表单提交脚本。假设我们需要自动填写并提交一个注册表单,表单包含姓名、邮箱和密码三个字段。

项目需求

  1. 打开注册页面
  2. 填写表单字段
  3. 提交表单
  4. 抓取并验证提交结果

项目实现

        以下是完整的实现代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
import requests
from bs4 import BeautifulSoup


# 初始化WebDriver
driver = webdriver.Chrome()

# 打开注册页面
driver.get("https://www.example.com/register")

# 等待页面加载
time.sleep(2)

# 填写表单字段
name_field = driver.find_element(By.NAME, "name")
email_field = driver.find_element(By.NAME, "email")
password_field = driver.find_element(By.NAME, "password")
name_field.send_keys("John Doe")
email_field.send_keys("johndoe@example.com")
password_field.send_keys("securepassword123")

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

# 等待表单提交结果加载
time.sleep(2)

# 获取提交结果页面内容
result_page_url = driver.current_url
response = requests.get(result_page_url)
html_content = response.content

# 使用BeautifulSoup解析提交结果页面
soup = BeautifulSoup(html_content, "lxml")

# 查找并验证提交结果
success_message = soup.find("div", {"class": "success-message"})

if success_message:
    print("表单提交成功:", success_message.text)

else:
    print("表单提交失败")

# 关闭浏览器
driver.quit()

代码解释

  • 初始化WebDriver:我们使用Chrome浏览器初始化Selenium WebDriver。
  • 打开注册页面:通过WebDriver的`get`方法打开注册页面。
  • 填写表单字段:使用`find_element`方法定位表单字段,并使用`send_keys`方法输入数据。
  • 提交表单:找到提交按钮并点击。
  • 获取提交结果页面内容:使用Requests库获取提交结果页面的HTML内容。
  • 解析提交结果页面:使用BeautifulSoup解析HTML文档,查找并验证提交结果。

        在这个项目中,我们展示了如何结合Selenium和BeautifulSoup实现一个自动化表单提交脚本。这种技术可以应用于许多实际场景,如自动化测试、批量数据提交和数据抓取等。

总结

        自动化脚本在现代编程中具有广泛的应用,特别是在需要处理重复性工作和提高工作效率的场景中。Selenium和BeautifulSoup是两个非常强大的工具,前者用于网页自动化操作,后者用于网页数据抓取。通过结合这两者的使用,我们可以实现功能强大的自动化解决方案。

        希望通过这篇内容,能够掌握基本的网页自动化和数据抓取技术,并能够应用这些技术解决实际问题。未来的学习中,可以尝试更多复杂的自动化任务,如处理AJAX请求、模拟用户操作、抓取动态数据等,不断提升编程技能。

下一篇:白骑士的Python教学实战项目篇 4.3 机器学习入门​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/764859.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么方法能快速分享视频给他人?视频二维码提供预览的制作技巧

现在想要分享一个或者多个视频时,很多人会选择将视频生成二维码的方法来展现视频内容,通过这种方式可以让多人同时扫码查看同一个视频,有效提升其他人获取内容的速度及视频传播的效率。那么视频转换成二维码的方法是什么样的呢? …

USB PD+TYPE -C快充电源中MOSFET选型,USB PD应用市场包含智能手机,平板电脑,笔记本电脑,游戏本,移动硬盘,数码相机,电动工具等传统领域

USB PD全称为USB Power Delivery,是由USB-IF组织制定的一种快速充电协议,也是目前市场非常看好的一种协议,可以支持输出功率高达100W;Type-C是一种接口规范,能够支持传输更大的电流。USB PD应用市场不仅包含智能手机&a…

【项目】个人论坛测试报告

论坛测试报告 一、项目背景二、项目功能三、测试计划一)功能测试二)自动化测试三)性能测试登录测试 使用VUG创建脚本1)编写用户进行登录的脚本2)对脚本进行强化 使用controller创建场景使用Analysis生成测试报告测试报…

NX 二次开发-获取CAM切削层数据

int count 0;tag_t* objects;UF_UI_ONT_ask_selected_nodes(&count, &objects); //获取当前加工导航器选中的对象数量和tagif (count < 0){return 0;}UF_CUT_LEVELS_t* cut_levels_ptr_addr NULL; //读工序的切削层UF_CUT_LEVELS_load(objects[0], &…

高考失利咨询复读,银河补习班客服开挂回复

补习班的客服在高考成绩出来后&#xff0c;需要用专业的知识和足够的耐心来回复各种咨询&#xff0c;聊天宝快捷回复软件&#xff0c;帮助客服开挂回复。 ​ 前言 高考成绩出来&#xff0c;几家欢喜几家愁&#xff0c;对于高考失利的学生和家长&#xff0c;找一个靠谱的复读补…

Python的库dataperp读取excel和csv

领导说这个很牛&#xff0c;不过咱们不能听别人一口之言&#xff0c;咱们应该亲手试试&#xff0c;在来说这个好或者不好。 这个dataprepe已经不维护了&#xff0c;最高只支持python3.11以下版本,建议选择3.9. 他只能处理dataframe格式的数据&#xff0c;也就是pandas加载后的数…

monkey大全!可直接运用在项目中的常规monkey命令

测试步骤 adb devices-----了解包名-----adb shell monkey -----p 包名 ----v 运行次数&#xff08;多个参数的组合形成不同的用例以求最大的覆盖&#xff09;-----当崩溃或无响应时分析monkey日志 常规monkey命令 &#xff08;可直接在项目里使用&#xff09; adb shell m…

CAD图纸怎么加密?(五种简单的CAD图纸加密方法分享)

在企业中&#xff0c;CAD图纸通常含有许多敏感且机密信息&#xff0c;对设计图纸的安全保护至关重要。为确保CAD图纸不被未经授权的人访问、复制或篡改&#xff0c;企业需要采用有效的加密措施。以下是一些常用的方法和工具&#xff0c;帮助企业对CAD图纸进行加密保护&#xff…

飞睿uwb防丢定位器芯片方案,厘米级无线定位测距,超宽带可传输可MESH组网模块

在信息爆炸的时代&#xff0c;我们的生活越来越离不开各种各样的智能设备。从手机到手表&#xff0c;从智能家居到无人驾驶&#xff0c;科技的进步让我们的生活变得更加便捷、高效。然而&#xff0c;随着我们拥有的物品越来越多&#xff0c;如何确保这些物品的安全&#xff0c;…

Rabbitmq部署

环境 操作系统CentOS7 安装 准备安装包 # rabbitmq基于erlang语言开发&#xff0c;需先安装erlang语言解释器 [rootnode2 ~]# ls erlang-21.3-1.el7.x86_64.rpm rabbitmq-server-3.8.8-1.el7.noarch.rpm [rootnode2 ~]# rpm -ivh erlang-21.3-1.el7.x86_64.rpm #安装soca…

玉林师范学院宿舍管理系统的设计与实现19633

玉林师范学院宿舍管理系统设计与实现 摘要&#xff1a;随着大学生人数的增加&#xff0c;宿舍管理成为高校管理中的重要问题。本论文旨在研究玉林师范学院宿舍管理系统&#xff0c;探讨其优势和不足&#xff0c;并提出改进建议。通过对相关文献的综述和实地调研&#xff0c;我们…

MobileNetsV1、MobileNetsV2、MobileNetsV3

参考来源&#xff1a; MobileNet(V1,V2,V3)网络结构详解与模型的搭建_bneck结构图-CSDN博客轻量级神经网络MobileNet全家桶详解-CSDN博客 汇总 MobileNetsV1特性&#xff1a; MobileNetsV2特性 &#xff1a; MobileNetsV3特性 &#xff1a; 三者特性汇总&#xff1a; Mobil…

button1 <Button>: Missing Constraints in ConstraintLayout

书籍 《第一行代码 Android》第三版 开发 环境 Android Studio Jellyfish | 2023.3.1 问题 在学习3.2.2 创建和加载布局章节,在first_layout.xml中增加一个按钮button1时报错:"button1 <Button>: Missing Constraints in ConstraintLayout" 分析 产生这个…

香橙派OrangePi AIpro初体验:当小白拿到一块开发板第一时间会做什么?

文章目录 香橙派OrangePi AIpro初体验&#xff1a;当小白拿到一块高性能AI开发板第一时间会做什么前言一、香橙派OrangePi AIpro概述1.简介2.引脚图开箱图片 二、使用体验1.基础操作2.软件工具分析 三、香橙派OrangePi AIpro.测试Demo1.测试Demo1&#xff1a;录音和播音(USB接口…

从华为到支付宝,3年外包生涯做完,我这人生算是彻底废了......

我为什么一直做外包呢&#xff0c;原因是薪资和技术方面。 在华为做了一年外包&#xff0c;薪资5k&#xff0c;功能测试&#xff0c;接触Linux和网络&#xff0c;但是说实在的技术很难沉淀&#xff0c;就像雾里看花一样&#xff0c;过年之后&#xff0c;想走的人都走了&#x…

重榜:鸿蒙 Charles 抓包设置

亲测可用&#xff01;2040702更新 Charles是一款用于网络调试和分析的代理工具&#xff0c;可以拦截和查看设备与服务器之间的网络通信。通过Charles&#xff0c;可以监视应用程序的网络流量、修改请求和响应&#xff0c;甚至模拟不同的网络条件。其主要功能包括&#xff1a; …

测试基础内容的学习

1、测试分类 黑盒&#xff0c;灰盒&#xff0c;白盒&#xff0c;冒烟&#xff0c;回归测试&#xff1b; 2、衡量软件质量的维度&#xff08;8个&#xff09; 3、需求分析->测试点提取->编写测试文档->执行测试用例->缺陷管理->总结报告 测试点提取&#xff1…

uniapp微信小程序使用xr加载模型

1.在根目录与pages同级创建如下目录结构和文件&#xff1a; // index.js Component({properties: {modelPath: { // vue页面传过来的模型type: String,value: }},data: {},methods: {} }) { // index.json"component": true,"renderer": "xr-frame&q…

Pandas实战秘籍:轻松驾驭重复值与异常值的处理艺术,让数据清洗更高效!

1.导包 import numpy as np import pandas as pd2.删除重复行 def make_df(indexs,columns):data [[str(j)str(i) for j in columns] for i in indexs]df pd.DataFrame(datadata,indexindexs,columnscolumns)return df使用 duplicated() 函数检测重复的行 返回元素为布尔类…