Python爬虫之selenium库驱动浏览器

目录

一、简介

二、使用selenium库前的准备

1、了解selenium库驱动浏览器的原理

(1)、WebDriver 协议

(2)、 浏览器驱动(Browser Driver)

(3)、 Selenium 客户端库

(4)、 工作流程

(5)、 跨浏览器支持

(6)、 自动化测试

2、安装WebDriver

 安装步骤(以谷歌浏览器为例)

(1)、查看自己的浏览器版本

 (2)、进入chromedriver下载地址

(3)、 把解压后的Chromedriver.exe文件拷贝到python安装目录的Scripts目录下

3、安装selenium库

(1)、在命令提示符窗口或终端执行以下的命令

(2)、安装完成后使用以下命令查看库的信息

三、使用selenium驱动浏览器

四、总结


一、简介

selenium库是一种用于用于Web应用程序测试的工具,它可以驱动浏览器执行特定操作,自动按照脚本代码做出单击、输入、打开、验证等操作,支持的浏览器包括IE、Firefox、Safari、Chrome、Opera等。与requests库不同的是,selenium库是基于浏览器的驱动程序来驱动浏览器执行操作的。且浏览器可以实现网页源代码的渲染,因此通过selenium库还可以轻松获取网页中渲染后的数据信息。

二、使用selenium库前的准备

1、了解selenium库驱动浏览器的原理

(1)、WebDriver 协议

Selenium 使用 WebDriver 协议与浏览器进行通信。WebDriver 是一个基于 HTTP 的协议,定义了与浏览器交互的命令和响应格式。每个浏览器(如Chrome、Firefox、Safari等)都有自己的 WebDriver 实现(如ChromeDriver、GeckoDriver等),这些实现负责将 WebDriver 命令转换为浏览器能够理解的指令。

(2)、 浏览器驱动(Browser Driver)

浏览器驱动是一个独立的可执行文件,它充当浏览器和 Selenium 之间的桥梁。每个浏览器都有对应的驱动程序:

  • ChromeDriver:用于控制 Google Chrome 浏览器。

  • GeckoDriver:用于控制 Mozilla Firefox 浏览器。

  • SafariDriver:用于控制 Apple Safari 浏览器。

  • EdgeDriver:用于控制 Microsoft Edge 浏览器。

浏览器驱动程序会启动一个本地服务器,监听来自 Selenium 的请求,并将这些请求转换为浏览器能够执行的操作。

(3)、 Selenium 客户端库

Selenium 客户端库(如 selenium Python 库)提供了编程接口,允许开发者通过代码发送 WebDriver 命令。开发者可以使用这些库来编写脚本,控制浏览器执行各种操作,如打开网页、点击按钮、填写表单等。

(4)、 工作流程

以下是 Selenium 驱动浏览器的基本工作流程:

  1. 启动浏览器驱动:Selenium 客户端库会启动浏览器驱动程序(如 ChromeDriver),并建立一个连接。

  2. 创建浏览器实例:通过 WebDriver 协议,Selenium 客户端库会请求浏览器驱动创建一个新的浏览器实例。

  3. 发送命令:开发者通过 Selenium 客户端库发送各种 WebDriver 命令(如 driver.get("https://example.com")),浏览器驱动会将这些命令转换为浏览器能够执行的操作。

  4. 执行操作:浏览器执行相应的操作,如加载网页、点击按钮等。

  5. 获取结果:浏览器将执行结果返回给浏览器驱动,浏览器驱动再将结果返回给 Selenium 客户端库。

  6. 关闭浏览器:操作完成后,开发者可以关闭浏览器实例。

(5)、 跨浏览器支持

Selenium 的一个主要优势是它支持多种浏览器。开发者可以通过配置不同的浏览器驱动来实现跨浏览器测试。例如,使用 webdriver.Chrome() 可以控制 Chrome 浏览器,使用 webdriver.Firefox() 可以控制 Firefox 浏览器。

(6)、 自动化测试

Selenium 广泛用于自动化测试,特别是在 Web 应用程序的端到端测试中。通过编写脚本,开发者可以模拟用户在浏览器中的操作,验证应用程序的功能和性能。

2、安装WebDriver

选择使用的组合,以下三种方式安装一组即可

  • selenium + PhantomJS
  • selenium + chromedriver + Chrome
  • selenium + geckodriver + Firefox

火狐浏览器或者谷歌浏览器需要额外下载浏览器驱动器  

下载地址

chromedriver:CNPM Binaries Mirroricon-default.png?t=O83Ahttps://registry.npmmirror.com/binary.html?path=chrome-for-testing/

geckodriver:https://github.com/mozilla/geckodrive/releasesicon-default.png?t=O83Ahttps://github.com/mozilla/geckodrive/releases

PhantomJS:https://phantomjs.org/downloqd.htmlicon-default.png?t=O83Ahttps://phantomjs.org/downloqd.html  

 安装步骤(以谷歌浏览器为例)
(1)、查看自己的浏览器版本

点击浏览器右上角三个圆点-->帮助-->关于Google Chrome

 (2)、进入chromedriver下载地址

选择一个和自己浏览器版本比较近的(相同或略高于)

 

(3)、 把解压后的Chromedriver.exe文件拷贝到python安装目录的Scripts目录下

3、安装selenium库

(1)、在命令提示符窗口或终端执行以下的命令
pip install selenium
(2)、安装完成后使用以下命令查看库的信息
pip show selenium

三、使用selenium驱动浏览器

from selenium import webdriver
import time# 创建浏览器对象
brow = webdriver.Chrome()
# 输入要访问的地址
brow.get('http://www.baidu.com/')
time.sleep(10)
# 关闭浏览器
brow.quit()

 

四、总结

Selenium 是一个功能强大且灵活的工具,适用于各种Web自动化需求。无论是用于测试、抓取数据,还是自动化日常任务,Selenium 都能提供强大的支持。

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始学TiDB(2)深入了解TiDB Server模块

TiDB Server 架构 TiDB Server 的主要功能: 一条SQL的执行流程: 1.将整个SQL语句解析成一个个的token,生成一个树形结构。 2.编译模块 1.首先需要做一个合法性验证,比如表存不存在等。 2.做逻辑优化:依据关系型代数等…

dbnet轻型网络文本检测 - python 实现

DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球(free)” -------------------------------------------------------------…

玩《三角洲行动》遇到游戏运行故障是什么原因?游戏运行故障要怎么解决?预防游戏运行故障问题出现

《三角洲行动》游戏运行故障解析与解决方案:原因、解决与预防 在畅游《三角洲行动》这款充满挑战与激情的游戏时,玩家可能会遭遇各种游戏运行故障,如卡顿、闪退、无法启动等问题。我将结合自己丰富的经验和知识,为大家深入剖析《…

【Axure高保真原型】数值条件分组

今天和大家分享数值条件分组的原型模板,效果包括: 点击添加分组按钮,可以显示添加弹窗,填写分组名称和数值区间后,可以新增该分组信息‘’ 修改分组区间,可以直接在输入框里修改已有的分组区间&#xff0c…

「Mac畅玩鸿蒙与硬件40」UI互动应用篇17 - 照片墙布局

本篇将带你实现一个简单的照片墙布局应用,通过展示多张图片组成照片墙效果,用户可以点击图片查看其状态变化。 关键词 UI互动应用照片墙布局Grid 布局动态图片加载用户交互 一、功能说明 照片墙布局应用的特点: 动态加载多张图片组成网格布…

【Golang】Golang基础语法之面向对象:结构体和方法

面向对象——结构 Go 仅支持封装,不支持继承和多态;继承和多态要做的事情交给接口来完成,即——面向接口编程。Go 只有 struct,没有 class。 定义一个最简单的树节点(treeNode)结构,方法如下&…

AI 建站:Durable

网址:https://app.durable.co 步骤 1) 登录 2)点击创建新业务 3)填写信息后,点击创建 4)进入业务 5)生成网站 6)生成完成后不满意的话可以自己调整 7)点击保存 8)发布 …

UML箭线图的理解和实践

在软件开发的世界里,UML(统一建模语言)作为一种标准化的建模语言,扮演着举足轻重的角色。UML类图更是软件开发设计和架构过程中的核心工具,它不仅能帮助开发者明确系统中的类及其关系,还能为后续的代码实现…

centos7.6安装oracle 11g 保姆级教程

文章目录 一、配置基础环境1. 下载依赖2. 禁用linuxse3. 其他服务禁用4. 修改内核参数5. 修改limit6. 修改pam7. 创建用户组及目录8. 设置密码9. 设置目录10. 配置环境变量 安装jdk1. 获取默认安装信息: rpm -qa | grep java,如果得到如下信息则需要逐一…

使用Dapper创建一个简单的查询

1.先在NuGet上下载Dapper包 2.创建对应的model 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 数据显示 {public class User{public int UserId { get; set; }public…

SQL——DQL分组聚合

分组聚合: 格式: select 聚合函数1(聚合的列),聚合函数2(聚合的列) from 表名 group by 标识列; ###若想方便分辨聚合后数据可在聚合函数前加上标识列(以标识列进行分组) 常见的聚合函数: sum(列名):求和函数 avg(列名)…

第77期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…

nginx漏洞修复

漏洞名称:web服务器http信息头公开 解决,在以下各个监听端口加上一行,然后重启****nginx server_tokens off; 漏洞名称:默认的nginx http服务器设置 解决:请求头加上以下参数 add_header Content-Security-Policy “…

远程修改ESXi 6.7管理IP地址

1.启用安全Shell(也就是EXSi可以被SSH访问的功能) 2.使用SecureCRT SSH2连接ESXi主机,现在使用dcui并没有任何反应,在Session标签栏右键点击Disconnect。 The time and date of this login have been sent to the system logs.WA…

结构型-组合模式(Composite Pattern)

什么是组合模式 又名部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。 结构 抽象根节点(Co…

【求助】Tinymce组件异常

版本号 { "tinymce/tinymce-vue": "^3.0.1", "tinymce": "^5.10.9", "vue": "^2.6.10", }问题: 就是红框处点击后没有菜单出现,下面是正常的

LabVIEW气缸摩擦力测试系统

基于LabVIEW的气缸摩擦力测试系统实现了气缸在不同工作状态下摩擦力的快速、准确测试。系统由硬件平台和软件两大部分组成,具有高自动化、精确测量和用户友好等特点,可广泛应用于精密机械和自动化领域。 ​ 项目背景: 气缸作为舵机关键部件…

在.NET 6中使用Serilog收集日志

此示例的完整详细信息:https://download.csdn.net/download/hefeng_aspnet/89998498 Serilog 是一个日志库,它提供对文件、控制台和其他几个地方的记录。它易于配置,并且具有干净且易于使用的界面。 Serilog具有无与伦比的输出目的地选择&…

使用Goland对6.5840项目进行go build出现异常

使用Goland对6.5840项目进行go build出现异常 Lab地址: https://pdos.csail.mit.edu/6.824/labs/lab-mr.html项目地址: git://g.csail.mit.edu/6.5840-golabs-2024 6.5840运行环境: mac系统 goland git clone git://g.csail.mit.edu/6.5840-golabs-2024 6.5840 cd 6.5840/src…

【Spring Cloud】实现微服务调用的负载均衡

文章目录 什么是负载均衡自定义实现负载均衡启动shop-product微服务通过nacos查看微服务的启动情况自定义实现负载均衡 基于Ribbon实现负载均衡添加注解修改服务调用的方法Ribbon支持的负载均衡策略通过修改配置来调整 Ribbon 的负载均衡策略通过注入Bean来调整 Ribbon 的负载均…