使用Python的Selenium进行网络自动化的入门教程

news2024/11/28 2:37:18

使用Python的Selenium进行网络自动化入门

自动化可以被看作是在使用电子机器或机器人来执行任务的过程中去除人力的过程。

在这篇文章中,我们将研究网络流程的自动化。

让软件机器人在网络上自动执行流程和任务的能力被称为网络自动化。

使用网络自动化,我们可以做很多事情,例如。

  • 搜索网络。
  • 删除电子邮件。
  • 填写表格。
  • 登录网站。

在现代社会中,对执行重复性任务的速度的需求是必须的,这使得自动化成为必要。

Selenium是一个框架,用于网络应用程序测试、自动化软件测试和刮擦网络。

在python中,Selenium可以被看作是一套帮助开发者与网络互动的库,以实现网络流程的自动化。

当涉及到与网络浏览器的交互时,Selenium是一个非常强大的工具,它支持所有现代的网络浏览器,可以用各种编程语言进行编码,如Java、Python、C#等。

在本指南中,我们将研究如何使用Selenium来编写脚本,用Python来自动完成基本的网络任务。

前提条件

要理解本指南,读者必须熟悉。

  • HTML标签、元素、ID和类。
  • Python编程语言的基础知识

目标

在本指南中,我们将专注于建立两个Python自动化脚本。

一个将根据关键词 "大学 "进行谷歌搜索,另一个将自动登录Quora。

在本指南的最后,读者将能够写出能够的python脚本。

  • 在浏览器中查找元素。
  • 在浏览器中向表格区域插入文本。
  • 点击浏览器中的按钮。

预期的结果将是。

设置环境

 

首先,我们需要在Python中创建一个虚拟环境。

为了与selenium一起工作,我们将不得不安装selenium。要安装,使用下面的命令。 

pip install selenium
复制代码

我们还必须安装一个网络驱动器(网络自动化所需的工具)。网络驱动程序帮助我们与浏览器进行交互。

如果你使用的是Windows,我们将使用一个被称为chocolatey 的windows软件包管理器来安装网络驱动程序。

要安装,我们将使用下面的命令。

choco install chromedriver
复制代码

如果你使用的是macOS,我们将使用下面的命令。

brew cask install chromedriver
复制代码

chromedriver 的版本应该与你的浏览器版本兼容。

如果你遇到兼容性错误,那么下载基于你的浏览器版本的驱动程序。

自动进行谷歌搜索

创建一个文件app.py ,并添加以下代码。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.google.com/')
复制代码

上面的代码片段用于打开浏览器并请求一个网页url 。

第一行代码从Selenium导入web驱动。第二行打开chrome的web驱动driver 。

注意:不同的浏览器有不同的网络驱动。如果你喜欢使用不同的浏览器,请在互联网上浏览该驱动程序的名称。

例如,我们会使用firefoxDriver ,用于Firefox浏览器。

在第三行,我们使用driver ,向浏览器发送请求,要求使用url 。

你可以使用下面的命令运行该代码。

python app.py
复制代码

上述代码打开了Chrome浏览器,如下图所示。

接下来,我们将在谷歌网站的搜索栏中输入一个search 关键词。要做到这一点,我们将不得不通过检查页面来获得搜索字段的元素。

要检查该页面,请在谷歌网站页面上点击右键,然后点击Inspect element 。

浏览器将打开一个窗口,如下图所示。

在继续之前,我们需要了解什么是Selenium中的定位器。

定位器是我们可以在网页上识别网络元素的方法。它们帮助我们找到网页上的任何元素。

我们可以用不同类型的定位器来识别网页上的元素。它们包括 -id,class,name, 和xpath 。

我们使用它们,如下图所示。

  • find_element_by_id.
  • find_element_by_name.
  • find_element_by_className.
  • find_element_by_xpath.

从上面的id,name, 和className 是HTML属性,用于在HTML标签内控制其行为。

xpath 代表可扩展标记语言路径**(XML path**)是一种在网页上寻找元素的语法。

要获得该元素,请在div 标签上悬停,并不断打开突出搜索栏的标签,直到找到只突出搜索栏的标签。

然后,右击该标签,点击复制xpath 。接下来,粘贴xpath ,如图所示。

searchField = driver.find_element_by_xpath('/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input')
searchField.send_keys('university')

searchField.submit()
复制代码

从上面的代码片断来看。

  • 我们用复制的xpath 的值初始化了变量searchField 。
  • send_keys() 是用来在 对象中插入文本的。searchField
  • searchField.send_keys('university') 在搜索框中插入值 。university
  • searchField.submit() 提交搜索请求。

注意:如果网页上有这样的元素,你也可以搜索submit 按钮,并对其使用click() 方法。但是,submit() 方法使它更容易。

你的完整代码将看起来像下面的片段。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.google.com/')

searchField = driver.find_element_by_xpath('/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input')
searchField.send_keys('university')

searchField.submit()
复制代码

如果你运行你的代码,它将打开浏览器,请求谷歌网页,在搜索框中输入university 值,并自动提交。

自动登录到一个网站

利用我们从前面的例子中学到的东西,让我们尝试登录Quora网站。要做到这一点,让我们在我们的项目目录中创建一个新文件,名称为main.py 。将下面的代码粘贴或输入到该文件中。

from selenium import webdriver

driver = webdriver.Chrome()

driver.get('https://www.quora.com/') # Open Quora website

emailField = driver.find_element_by_xpath('//*[@id="email"]') # HTML tag element for email field
emailField.send_keys('YourEmail') # Login user name

passwordField = driver.find_element_by_xpath('//*[@id="password"]') # HTML tag element for password field
passwordField.send_keys('YourPassword') # Login password

button = driver.find_element_by_xpath('//*[@id="root"]/div[2]/div/div/div/div/div/div[2]/div[2]/div[4]/button/div/div/div') # HTML tag element for button

button.click() # onClick event handler for HTML button
复制代码

从上面的代码片段来看。

  • 首先,我们从selenium 中导入webdriver 。
  • 为了避免多次使用webdriver.Chrome() ,我们将它们存储在一个变量中driver 。
  • driver.get('https://www.quora.com/') 向Quora发送一个请求。
  • emailField = driver.find_element_by_xpath('//*[@id="email"]') 通过 找到 字段。xpath email
  • emailField.send_keys('YourEmail') 将电子邮件地址插入到 字段中。email
  • passwordField = driver.find_element_by_xpath('//*[@id="password"]') 通过 找到密码字段。xpath
  • passwordField.send_keys('YourPassword') 将密码插入到 字段中。password
  • button = driver.find_element_by_xpath('//*[@id="root"]/div[2]/div/div/div/div/div/div[2]/div[2]/div[4]/button/div/div/div'),通过xpath 找到login 按钮。
  • button.click() 点击 按钮。login

当你运行该应用程序时,Chrome浏览器会打开,向Quora网站发送请求,填写登录细节,并将你登录到你的Quora账户。

结论

总之,我们能够编写两个Python脚本,进行谷歌搜索并登录Quora。

理解了上面的两个例子,你就会明白如何使用selenium来。

  • 直接到任何URL。
  • 查找任何HTML元素。
  • 填写和提交任何表格。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022年协议转让投资策略研究报告

第一章 协议转让的概念 协议转让是指双方当事人就转让标的物所有权达成协议,是典型的商业交易方式。而在破产案件中,则是一种有别于拍卖和以物抵债的处置财产的方式。根据《企业破产法》第112条,变价出售财产应当通过拍卖进行。但是&#xf…

云原生|kubernetes|安全漏扫神器trivy的部署和使用

前言: 云原生领域内的安全漏扫工具有clair和trivy是比较常用的,而安全漏扫工具是可以和harbor这样的私有仓库集成的,自harbor-1.21版以后都是默认使用trivy这个漏扫工具的,而在此之前是使用clair的。 那么,本文将就什…

实验十七 VLAN间的三层通信

实验十七 VLAN间的三层通信配置要求:通过三层交换机实现VLAN间互通通过单臂路由实现VLAN间互通网络拓扑图:操作步骤:一、 通过三层交换机实现VLAN间互通1、配置交换机LSW1的接口为trunk接口,g0/0/1口允许vlan 10通过,g…

构建器/生成器模式Builder

1.意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 2.结构 Builder为创建一个Product对象的各个部件指定抽象接口。 ConcreteBuilder实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的…

实验十五 IS-IS协议基本配置

实验十五 IS-IS协议基本配置IS-IS(中间系统到中间系统)协议与OSPF(开放最短路径优先)协议有许多类似之处, 如都是链路状态的IGP路由协议,采用的都SPF路由算法,都划分了区域。为了支持大规模 的路由网络,IS-IS在自治系统内采用骨丁…

四、MySQL 存储引擎及数据类型

文章目录一、前置知识二、MySQL 存储引擎(先了解,初步有个印象)2.1 MySQL 存储引擎的概念2.2 查询 MySQL 中支持的存储引擎2.3 InnoDB 存储引擎2.4 MyISAM 存储引擎2.5 MEMORY 存储引擎2.6 如何选择 MySQL 存储引擎?三、MySQL 数据类型3.1 数字类型3.2 日…

Dataway让SpringBoot不在需要Controller、Service、DAO、Mapper了

Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具。使得使用者无需开发任何代码就配置一个满足需求的接口。整个接口配置、测试、冒烟、发布。一站式都通过 Dataway 提供的 UI 界面完成。UI 会以 Jar 包方式提供并集成到应用中并和应用…

君子签用区块链打造电子合同证据链闭环,提升电子合同证据效力

电子合同作为电子证据的主要表现形式,采用电子合同发生纠纷时,相关的电子合同数据成为证据证明的关键。运用区块链去中心化、分布式存储、加密可溯源等技术特性,让电子合同的整个过程都可以在互联网上安全地进行,帮助打通数据信任…

JavaERP系统源码+数据库,业务闭环、灵活稳定的企业级ERP系统,真正的财务业务一体化系统

JavaERP系统源码数据库,业务闭环、灵活稳定的企业级ERP系统,真正的财务业务一体化系统 完整代码下载地址:JavaERP系统源码数据库 产品展示 社区版 主界面 权限模块 职员与组织 科目结构 库存管理 库存盘点 订单管理 出入库管理 凭…

【Spring【AOP】】——21、@EnableAspectJAutoProxy注解详解?

📫作者简介:zhz小白 公众号:小白的Java进阶之路 专业技能: 1、Java基础,并精通多线程的开发,熟悉JVM原理 2、熟悉Java基础,并精通多线程的开发,熟悉JVM原理,具备⼀定的线…

Docker二进制安装

目录 1、选择安装目录 2、了解默认安装 3、Docker网络了解 docker官网 1、选择安装目录 安装包下载 链接:https://pan.baidu.com/s/1mbUl2XLnlN4xZuHbvRF-vg?pwdpdoq 提取码:pdoq docker官网 1、选择安装目录 docker指定数据存储目录到 /data/…

mysql 乐观锁和悲观锁

悲观锁介绍(百科): 悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中…

二叉树的一些练习题

前言 二叉树的简单题目,通过画栈帧图去理解过程。画一画,走一走递归过程,理解会更加深刻。 二叉树练习题前言二叉树的创建二叉树先序遍历创建PreCreat二叉树层次创建LevelCreat二叉树的销毁BinaryTreeDestory二叉树求节点个数BinaryTreeSize二…

关于C语言输入输出的逗号问题(小细节)

C语言的输入输出必须要遵循scanf和printf的格式&#xff0c;就是你是什么格式你就要输入什么。 一、输入问题 #include <stdio.h> int main() { int a,b;scanf("%d,%d",&a,&b);printf("ab%d",ab);return 0; } 这个程序我们可以看到它运行…

【雷达开源数据集 | 代尔夫特数据集(VOD),4D雷达、激光雷达和相机数据】

本文编辑&#xff1a;调皮哥的小助理 1、介绍 代尔夫特视图 &#xff08;VoD&#xff09; 数据集是一种新颖的汽车数据集&#xff0c;包含 8600 帧同步和校准的 64 层 LiDAR、&#xff08;立体&#xff09;摄像头和 31D 雷达数据&#xff0c;这些数据是在复杂的城市交通中采集…

《编码 - 代码分析》代码结构分析

1 代码结构分析概述 在编写代码时&#xff0c;要求要结构清晰、接口简单。如果代码结构过于复杂&#xff0c;会带来很多问题&#xff1a;代码很难被理解&#xff0c;不方便编写测试用例&#xff0c;容易隐藏错误&#xff0c;出现问题难以定位&#xff0c;修改代码容易产生新的…

基于Java+SpringBoot+vue+elementui的校园文具商城系统详细设计和实现

基于JavaSpringBootvueelementui的校园文具商城系统详细设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文章目录基…

前端学习框架

一&#xff0c;学习路线图 https://roadmap.sh/ 二&#xff0c;学习资源整理 https://developer.mozilla.org/zh-CN/docs/Learn // 学习web 的各种资源网站 三&#xff0c;知识整理 将前端分为三步走 JavaScript 语言&#xff08;模块一&#xff09;CSS 和 HTML&#x…

【Latex】1.Latex环境的安装与配置

文章目录前言1 安装环境2. 下载texstudio前言 LaTeX&#xff08;LATEX&#xff0c;音译“拉泰赫”&#xff09;是一种基于ΤΕΧ的排版系统&#xff0c;由美国计算机学家莱斯利兰伯特&#xff08;Leslie Lamport&#xff09;在20世纪80年代初期开发&#xff0c;利用这种格式&a…

sqlmap之绕过云锁waf

sql注入不会绕过WAF&#xff1f;关注我&#xff0c;让我带你由简入难实战各个WAF&#xff0c;前天我们实战了安全狗的WAF&#xff0c;今天先来看看比它难度更高的云锁WAF&#xff0c;你会绕吗&#xff1f;看我带你将它拿下 目录 一&#xff1a;环境配置 1.云锁WAF 2.sqli-l…