【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,一经查实,立即删除!

相关文章

堆、栈和队列(数据结构)

堆、栈和队列(数据结构) 这里写目录标题 堆、栈和队列(数据结构)**栈****队列**堆(Heap)()队列(Queue)(FIFO)栈(Stack&…

【Rust】字符串String类型学习

什么是String Rust的核心语言中只有一个String类型,那就是String slice,str通常被当作是&str的借用。String类型是通过标准库提供的,而不是直接编码到核心语言中,它是一个可增长的、可变的、utf-8编码的类型。str和String都是utf-8编码的…

Faiss原理和使用

参考自https://github.com/facebookresearch/faiss/wiki,https://blog.csdn.net/Kaiyuan_sjtu/article/details/121551473 Faiss Faiss是一个用于高效相似性搜索和密集向量聚类的库。它包含搜索任意大小的向量集(大小由RAM决定)的算法。它还…

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

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

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

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

数据结构第21节 归并排序以及优化方案

归并排序(Merge Sort)是一种分治策略的排序算法。它将一个大数组分成两个子数组,递归地对它们进行排序,然后将排序后的子数组合并成一个有序数组。 Java代码实现: public class MergeSort {public static void main(…

4.Flink程序编程规范

目录 概述 概述 Flink程序编程规范 官网文档速递 1.Obtain an execution environment 获取执行环境2.Load/create the initial data 加载/创建初始数据 > 数据接入3.Specify transformations on this data 针对数据做处理操作 > 数据处理4.Specify where to put the re…

Java-使用Redisson实现的分布式锁

在使用Redisson实现的分布式锁时,可以很容易地在Java中加入多线程代码来模拟并发环境下 的锁行为。以下是一个使用Redisson的RLock接口创建分布式锁并在多线程环境中使用的示例代 码: 首先,需要在项目中添加Redisson的依赖。如果你使用Mav…

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}

八、Docker版MySQL主从复制

目录 一、MySQL主从复制原理就不做讲解了,详情请查看MySQL专栏 二、主从复制搭建步骤 1、新建主服务器容器实例3307 2、进入/usr/mysql/mysql-master/conf目录下新建my.cnf 3、修改完配置后,重启master实例 4、进入mysql-master容器 5、在mysql-ma…

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

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

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

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

携程Java后端实习一面

携程的面试比较注重八股文和项目,算法相关没有字节腾讯严厉,大家参加携程的技术岗面试需要重视八股文和项目细节,要学会深挖项目,希望大家早日oc😊👍 HashMap底层原理,扩容机制,从并…

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时代下智算中心设备的设计之道…