【python模块】Selenium

声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者或发布者无关。

文章目录

  • Selenium库
  • 功能介绍
  • 环境准备
  • 示例代码


Selenium库

Selenium库是一个强大的Web自动化工具,允许开发者通过编写脚本来控制浏览器,实现网页的自动测试和数据抓取。它提供了WebDriver接口,支持多种浏览器,如Chrome、Firefox等。使用Selenium,可以模拟用户行为,如点击、输入、导航等,适用于自动化测试、爬虫开发等多种场景。

功能介绍

Selenium库提供了丰富的方法来模拟用户与浏览器的交互。以下是一些常用的Selenium WebDriver方法的介绍:

  1. 初始化WebDriver:

    • webdriver.BrowserName(): 创建一个特定浏览器的WebDriver实例。
  2. 导航:

    • get(url): 加载指定的URL。
    • back(): 后退到浏览器历史记录中的上一个页面。
    • forward(): 前进到浏览器历史记录中的下一个页面。
    • refresh(): 刷新当前页面。
  3. 元素定位:

    • find_element(By.定位方式, 值): 查找页面上第一个匹配的元素。
    • find_elements(By.定位方式, 值): 查找页面上所有匹配的元素。
  4. 元素交互:

    • click(): 点击元素。
    • clear(): 清除输入字段的内容。
    • send_keys(*value): 向输入字段发送键序列。
    • submit(): 提交表单。
  5. 获取元素信息:

    • get_attribute(name): 获取元素的属性值。
    • text: 获取元素的文本内容。
    • tag_name: 获取元素的标签名。
    • is_displayed(): 检查元素是否可见。
    • is_enabled(): 检查元素是否启用。
  6. 等待:

    • implicitly_wait(seconds): 设置隐式等待时间,用于等待页面元素加载。
    • WebDriverWait(driver, timeout).until(condition): 显式等待,直到某个条件成立。
  7. 窗口和框架:

    • switch_to.window(name): 切换到指定名称的窗口。
    • switch_to.frame(element): 切换到指定的iframe。
  8. 执行JavaScript:

    • execute_script(script): 在当前页面执行JavaScript代码。
  9. 浏览器操作:

    • close(): 关闭当前窗口。
    • quit(): 关闭所有窗口并结束WebDriver会话。
  10. 截图:

    • get_screenshot_as_file(filename): 将当前页面截图保存为文件。
    • get_screenshot_as_png(): 获取当前页面的截图数据。
  11. Cookies操作:

    • add_cookie(cookie_dict): 添加一个cookie。
    • delete_cookie(name): 删除指定名称的cookie。
    • delete_all_cookies(): 删除所有cookies。
  12. 浏览器设置:

    • set_page_load_timeout(time_to_wait): 设置页面加载超时时间。
    • set_script_timeout(time_to_wait): 设置脚本执行超时时间。

这些方法覆盖了从浏览器启动、页面导航、元素交互到浏览器关闭的整个流程,为自动化测试和网页自动化提供了强大的支持。

环境准备

  • 安装Python。
  • 安装Selenium库:pip install selenium
  • 下载对应浏览器的WebDriver。
    查看浏览器版本:edge://version/
    在这里插入图片描述
    如图,我的版本为:126.0.2592.87 (正式版本) (64 位)
    驱动下载地址:https://developer.microsoft.com/zh-cn/microsoft-edge/tools/webdriver/
    在这里插入图片描述
    将其解压到python解释器目录并重命名为MicrosoftWebDriver.exe
    输入cmd命令:py -0p
    在这里插入图片描述

示例代码

抓取并展示指定网页上的所有链接信息

from selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Edge()# 打开目标网页
driver.get('https://movie.douban.com/top250')# 获取网页上所有的链接元素
links = driver.find_elements(By.TAG_NAME, 'a')# 遍历链接,打印链接的文本和href属性
for link in links:print(f"链接文本: {link.text}")print(f"链接地址: {link.get_attribute('href')}\n")# 关闭浏览器
driver.quit()
  1. 导入了selenium模块的webdriver和By子模块。
  2. 创建了一个Edge浏览器实例。
  3. 通过driver.get方法打开了豆瓣电影Top250的网页。
  4. 使用find_elements方法查找网页上所有的链接元素,并将其存储在links列表中。
  5. 通过遍历links列表,打印出每个链接的文本和href属性。
  6. 通过driver.quit方法关闭了浏览器。

在这里插入图片描述
抓取到了全部链接。


浮萍漂泊本无根,天涯游子君莫问。

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

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

相关文章

【vue教程】一. 环境搭建与代码规范配置

目录 引言Vue 框架概述起源与设计理念核心特性优势 Vue 开发环境搭建环境要求安装 Vue CLI创建 Vue 项目项目结构介绍运行与构建 组件实例基础模板响应式更新 代码规范为什么要使用代码规范在 Vue 项目中使用 ESLint 、PrettierESLint配置 ESLintrules 自定义错误级别 Prettier…

推理的判定定理三种验证方式

1. 真值表技术 2. 公式转换法 3. 主析取范式法 参考:离散数学-电子科技大学

LLM-阿里 DashVector + langchain self-querying retriever 优化 RAG 实践【Query 优化】

文章目录 前言self querying 简介代码实现总结 前言 现在比较流行的 RAG 检索就是通过大模型 embedding 算法将数据嵌入向量数据库中,然后在将用户的查询向量化,从向量数据库中召回相似性数据,构造成 context template, 放到 LLM 中进行查询…

python如何判断变量是否可迭代

python如何判断变量是否可迭代?方法如下: 方法一: 适用于python2和python3 >>> from collections import Iterable >>> isinstance("str", Iterable) True 方法二: 适用于python3 s "hello …

InterSystems IRIS使用python pyodbc连接 windows环境,odbc驱动安装,DSN配置,数据源配置

一、创建的数据库和数据 SELECT 1SELECT $ZVERSIONCREATE TABLE MyApp.Person ( ID INT PRIMARY KEY, Name VARCHAR(100) NOT NULL, Age INT, Gender CHAR(1) );CREATE TABLE MyApp.Person2 ( ID INT PRIMARY KEY, Name VARCHAR(100) NOT NULL, Age INT, Gender CHA…

Gil-Pelaez inversion

一、特征函数 A.随即变量的特征函数定义与性质 B.特征函数与PDF的关系 傅里叶变换:C.特征函数与矩函数关系 二、Gil-Pelaez反演定理 输入功率 P i n P_{in}

MYSQL 四、mysql进阶 9(数据库的设计规范)

一、为什么需要数据库设计 二、范 式 2.1 范式简介 在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。 可以理解为,一张数据表的设计结 构需要满足的某种设计标准的 级别 。要想设计一个结构合理的关系型数据库,必须满足一定的…

13 IP层协议-网际控制报文协议ICMP

计算机网络资料下载:CSDNhttps://mp.csdn.net/mp_blog/creation/editor/140148186 为了更有效的转发IP数据报和提高交付成果的机会,在网际层使用了网际控制报文协议ICMP。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP不是高层协议数…

Java面试八股之Redis集群Cluster

Redis集群Cluster Redis Cluster是一种基于数据分片(Sharding)的分布式缓存和存储系统,它实现了数据的水平扩展、高可用性和自动故障转移。以下是对Redis Cluster模式详细实现流程的描述: 1. 初始化与配置 部署节点&#xff1a…

C++ //练习 15.15 定义你自己的Disc_quote和Bulk_quote。

C Primer(第5版) 练习 15.15 练习 15.15 定义你自己的Disc_quote和Bulk_quote。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 /******************************************************************…

Python酷库之旅-第三方库Pandas(026)

目录 一、用法精讲 65、pandas.bdate_range函数 65-1、语法 65-2、参数 65-3、功能 65-4、返回值 65-5、说明 65-6、用法 65-6-1、数据准备 65-6-2、代码示例 65-6-3、结果输出 66、pandas.period_range函数 66-1、语法 66-2、参数 66-3、功能 66-4、返回值 6…

Gooxi受邀参加第三届中国数据中心服务器与设备峰会

7月2-3日,第三届中国数据中心服务器与设备峰会在上海召开,作为国内最聚焦在服务器领域的专业峰会,吸引了来自全国的行业专家、服务器与机房设备厂家,企业IT用户,数据中心业主共同探讨AIGC时代下智算中心设备的设计之道…

2024年最新最全面的Apifox使用-自动化测试

正文 编排测试场景运行测试持续集成查看测试结果 编排测试场景 新建测试场景 测试场景用于将多个接口有序地组合在一起运行,用于测试一个完整业务流程。 打开 Apifox 后点击左侧菜单栏中的“自动化测试”,点击左上角 号,选择所归属的目录…

记录|.NET上位机开发和PLC通信的实现

本文记录源自:B站视频 实验结果:跟视频做下来是没有问题的。能运行。 目录 前言一、项目Step1. 创建项目Step2. 创建动态图片展示Step3. 创建图片型按钮Step4. 创建下拉框Step1~4的效果展示Step5. 编程实体类操作类Main函数 Step1~5的效果展示Main函数 最…

Binder框架(二) ServiceManager初始化

0、总体流程四部 开机由init进程解析init.rc文件启动servicemanager.rc。启动会调用main.cpp的main函数 main函数里面主要做了以下几件事 : 1.1 打开/dev/binder设备; 1.2 通过mmap映射设备的内存空间到ServiceManager进程中。 1.3 设置ServiceManager为context…

气象水文耦合模式WRF-Hydro建模、编译及运行流程、依赖库准备、案例实践等

目录 第一部分 WRF-Hydro模型功能及运行流程、依赖库准备 第二部分 WRF-Hydro模式编译、离线运行及案例实践 第三部分 结合多案例进行模式数据制备及实践应用 第四部分 模式耦合编译及运行、总结 更多应用 WRF-Hydro模型是一个分布式水文模型,‌它基于WRF‌陆面…

数据库启动报ORA-600 6711故障分析处理---惜分飞

几个月以前的一个数据库故障,今天拿出来在win上重新分析,数据库启动报ORA-600 6711错 C:\Users\XFF>SQLPLUS / AS SYSDBA SQL*Plus: Release 12.1.0.2.0 Production on 星期日 7月 14 16:17:32 2024 Copyright (c) 1982, 2014, Oracle. All rights reserved. 已连接到空…

LabVIEW扬尘控制系统

设计了一套基于LabVIEW的扬尘控制系统,通过监测TsP(总悬浮颗粒物)浓度、风向和摄像头视频,实现对环境的综合监控和扬尘控制。系统可以自动判断扬尘位置,并驱动抑尘设备进行抑尘。硬件选用NI cDAQ-9178数据采集模块、Om…

linux高级编程(网络)(www,http,URL)

数据的封包和拆包 封包: 应用层数据(例如HTTP请求)被传递给传输层。传输层(TCP)在数据前添加TCP头部(包含端口号、序列号等)。网络层(IP)在TCP段前添加IP头部&#xff…

数据库:基本操作

SQL struct query language 关系型数据库 非关系 芒果db ddl data defination language 建表 dml 新增 修改 删除一行 data modifty dql 查询 data query language 查询 select 数据库 sun solaris gnu 1、分类: 大型 中型 …