当前位置: 首页 > news >正文

python爬虫——Selenium的基本使用

目录

一、Selenium的介绍

二、环境准备

1.安装Selenium

2.安装WebDriver

三、元素定位

1.常用定位元素的方法

2. 通过指定方式定位元素

四、窗口操作

1.最大化浏览器窗口

2.设置浏览器窗口大小

3.切换窗口或标签页

切换回主窗口

4. 关闭窗口

关闭当前窗口

关闭所有窗口

五、页面操作

1.刷新页面

2.返回前一页

3.前进到后一页

4.获取当前页面URL

5.获取页面标题

6..截取当前页面截图

7. 页面滚动

滚动页面到指定元素的位置

直接滚动到页面底部

​​​​


一、Selenium的介绍

        Selenium是一个非常强大的自动化测试工具,它支持多种编程语言,如Java、Python、C#等。Selenium可以模拟用户在浏览器中的行为,比如点击、输入、滚动等,从而实现对网页的自动化测试。本文将简要介绍在python中Selenium的基本使用方法。

二、环境准备

1.安装Selenium

通过pip命令安装Selenium库。具体的安装代码如下:

pip install selenium

2.安装WebDriver

WebDriver是浏览器的自动化驱动程序。每种浏览器都应一个特定的WebDriver,不同的浏览器使用的驱动驱动程序各不同,需要根据自己的浏览器版本下载对应的WebDriver。

本文安装Chrome浏览器的驱动程序。

(1)查看当前使用的Chrome浏览器的版本号

打开Chrome浏览器 → 点击右上角的三个点(自定义及控制)→ 选择“帮助” → 进入“关于Google Chrome”页面。如图:

(2)访问Chrome WebDriver下载页面,下载与Chrome浏览器版本相匹配的WebDriver版本。

(3)解压WebDriver

(4)设置WebDriver路径:将解压后的chromedriver可执行文件放置在系统PATH环境变量中的目录里。将Webdriver配置到系统环境变量中,以后在使用WebDriver时,就不需要重复指定WebDriver的执行路径。

三、元素定位

1.常用定位元素的方法

常用定位元素的方法
find_element()通过指定方式定位元素
find_element_by_id())通过id属性定位元素
find_element_by_name()通过name属性定位元素
find_element_by_xpath()通过XPath的路径表达式定位元素
find_element_by_link_text()通过连接文本定位元素
find_element_by_partial_link_text()通过部分链接文本定位元素
find_element_by_tag_name()通过标签名定位元素
find_element_by_class_name()通过class属性定位元素
find_element_by_css_selector()通过CSS选择器定位元素

2. 通过指定方式定位元素

find_element() 方法是定位单个元素的通用方法。find_element() 方法声明如下:

find_element(self, by=By.ID, value=None)

该方法需要两个参数:一个是 By 类中的定位器策略(如 By.IDBy.XPATH 等),另一个是对应的定位值。其中self 是一个指向当前 webdriver 实例的引用,当你调用 find_element() 方法时,self 不需要你显式提供,它会自动传递。你只需要提供方法的参数。 

参数By支持的取值及其说明
By.ID通过id属性定位元素
By.NAME通过name属性定位元素
By.CLASS_NAME通过class属性定位元素
By.LINK_TEXT通过连接文本定位元素
By.PARTIAL_LINK_TEXT通过部分链接文本定位元素
By.CSS_SELECTOR通过CSS选择器定位元素
By.XPATH通过XPath的路径表达式定位元素

以下是 通过find_element() 方法的获取“百度一下这四个字”的示例 :

from selenium import webdriver
# 导入By类
from selenium.webdriver.common.by import By# 已经将ChromeDriver放置在了系统的PATH环境变量中,
# Selenium将会自动寻找ChromeDriver并使用它来控制Chrome浏览器
driver = webdriver.Chrome()# 打开一个网页
driver.get("http://www.baidu.com")  # 移除了错误的HTML实体,确保URL正确# 使用类名定位按钮元素
search_button = driver.find_element(By.CLASS_NAME, 's_btn')
# 获取按钮的value属性,即按钮上显示的文本
button_text = search_button.get_attribute('value')
print(button_text)# 关闭浏览器
driver.quit()

四、窗口操作

1.最大化浏览器窗口

在爬取某些需要全屏显示的网页内容时,我们可以最大化浏览器窗口。

driver = webdriver.Chrome()
driver.maximize_window()

2.设置浏览器窗口大小

为浏览器窗口设置特定的尺寸,以确保网页内容按预期加载和显示。

driver.set_window_size(1000, 800)  # 设置窗口宽度为1000px,高度为800px

3.切换窗口或标签页

# 打开新窗口
driver.execute_script("window.open('http://example.com');")
# 获取所有窗口的句柄
window_handles = driver.window_handles
# 切换到新窗口
driver.switch_to.window(window_handles[n])

切换回主窗口

# main_window_handle是主窗口的句柄
driver.switch_to.window(main_window_handle)

4. 关闭窗口

关闭当前窗口

在爬虫中,我们有时会打开多个窗口,完成操作后需要关闭当前窗口。

driver.close()

关闭所有窗口

在爬虫任务结束时,我们可以关闭所有打开的窗口。 

driver.quit()

五、页面操作

1.刷新页面

driver.refresh()

2.返回前一页

driver.back()

3.前进到后一页

driver.forward()

4.获取当前页面URL

current_url = driver.current_url

5.获取页面标题

page_title = driver.title

6..截取当前页面截图

在爬虫中,我们有时需要验证页面内容是否正确加载,可以截取当前页面的截图。

driver.get_screenshot_as_file('screenshot.png')

7. 页面滚动

滚动页面到指定元素的位置

element = driver.find_element(By.ID, 'footer')
driver.execute_script("arguments[0].scrollIntoView();", element)

直接滚动到页面底部

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")


相关文章:

python爬虫——Selenium的基本使用

目录 一、Selenium的介绍 二、环境准备 1.安装Selenium 2.安装WebDriver 三、元素定位 1.常用定位元素的方法 2. 通过指定方式定位元素 四、窗口操作 1.最大化浏览器窗口 2.设置浏览器窗口大小 3.切换窗口或标签页 切换回主窗口 4. 关闭窗口 关闭当前窗口 关闭所…...

【Linux】【xmake】安装 + C/C++常用项目配置

文章目录 0. 环境准备1. 子命令create - 快速创建项目build - 构建程序config - 配置编译需要的参数show - 查看当前工程基本信息update - 程序自更新 2. C/C 项目常用配置2.1 项目目标类型2.2 添加宏定义2.3 头文件路径和链接库配置2.4 设置语言标准2.5 设置编译优化2.6 添加源…...

Android 添加菜单开关控制Camera相机和第三方相机

本文主要通过SystemProperties系统属性和Settings.System存储数据库的状态进行判断,从而实现控制相机 /vendor/mediatek/proprietary/packages/apps/MtkSettings/res/values-zh-rCN/strings.xml <!--camera--> <string name="manager_camera_switch"&…...

【Java知识】使用jacoco实现代码覆盖率测试

文章目录 1. 添加JaCoCo插件到项目2. 配置Maven Surefire Plugin3. 执行测试并生成报告4. 查看覆盖率报告注意事项 要使用JaCoCo实现代码覆盖率测试&#xff0c;你需要遵循以下步骤&#xff1a; 1. 添加JaCoCo插件到项目 在Maven项目的pom.xml文件中添加JaCoCo插件。这允许你执…...

道路车辆功能安全 ISO 26262标准(9-2)—面向汽车安全完整性等级 (ASIL) 和安全的分析

写在前面 本系列文章主要讲解道路车辆功能安全ISO26262标准的相关知识&#xff0c;希望能帮助更多的同学认识和了解功能安全标准。 若有相关问题&#xff0c;欢迎评论沟通&#xff0c;共同进步。(*^▽^*) 1. 道路车辆功能安全ISO 26262标准 9. ISO 26262-9 面向汽车安全完整…...

hutool常用方法

1、树结构工具-TreeUtil 构建Tree示例 package com.sl.transport.common.util;import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.TreeNode; import cn.hutool.core…...

CloudSat数据产品数据下载与处理 (matlab)

CloudSat数据下载 这个数据我之前和CALIPSO弄混了&#xff0c;后来发现它们虽然是同一个火箭上去&#xff0c;但是数据产品却在不同的平台下&#xff0c;CloudSat的数据更加关注云的特性&#xff0c;包括云覆盖、云水当量、云分类数据。 数据网址在&#xff1a;CloudSat网址 …...

LDR6500 一拖三快充线的定义与特点

定义&#xff1a;LDR6500 一拖三快充线是一种具有 Type-C 接口的充电线&#xff0c;它的最大特点是可以同时连接三个设备进行快速充电。 特点&#xff1a; 高效充电&#xff1a;采用先进的快充技术&#xff0c;能够快速为设备充电&#xff0c;大大缩短充电时间。同时&#xf…...

Elasticsearch安装使用

ES 概述 Elasticsearch&#xff0c;简称为 ES&#xff0c;是一款非常强大的开源的高扩展的分布式全文检索引擎&#xff0c;可以帮助我们从海量数据中快速找到需要的内容,它可以近乎实时的存储、检索数据.还可以可以实现日志统计、分析、系统监控等功能. 官网:https://www.elast…...

计算机网络的主要知识点小结

计算机网络是指将多台计算机通过通信线路连接起来&#xff0c;实现资源共享和信息传递的系统。 一、计算机网络概述 1. 定义和功能 - 定义&#xff1a;计算机网络是将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操…...

fastjson/jackson对getter,setter和constructor的区分

在复现完fastjson1.2.24-1.2.80和jackson的所有相关漏洞后&#xff0c;总结的一些规则 以下均指对json的反序列化过程 setter fastjson调用setter&#xff1a;遍历所有方法&#xff0c;找出所有满足setter要求的方法&#xff0c;再根据传入的json去反射调用 jackson调用set…...

认识CSS语法

CSS&#xff08;网页美容&#xff09; 重点&#xff1a;选择器、盒子模型、浮动、定位、动画&#xff0c;伸缩布局 Css的作用&#xff1a; 美化网页&#xff1a;CSS控制标签的样式 网页布局&#xff1a;CSS控制标签的位置 概念&#xff1a;层叠样式表&#xff08;级联样式表…...

Linux运维篇-ansible的使用

目录 ansible简介ansible架构1、连接插件2、核心模块3、自定义模块4、插件5、剧本6、主机清单 ansible的执行过程安装Ansibleansible的使用ansible.cfg文件修改添加主机清单方式一方式二方式三 测试主机清单连接 ansible简介 简单来说&#xff0c;ansible就是一个自动化运维工…...

【MySQL】日志

1. 日志基本了解 常见的MySQL Server日志类型&#xff0c;以及记录的日志信息&#xff08;场景通俗理解&#xff09; 错误日志 记录的主要信息由服务器关闭、启动、崩溃事件&#xff1b;MySQL运行过程中出现的错误、警告和严重事件以及与权限、配置相关的问题使用场景 诊断MyS…...

2024年CentOS镜像下载地址,包括CentOS官网、国内镜像下载,超详细也

这里给大家提供了4种镜像下载地址&#xff0c;包括CentOS官方镜像下载、阿里云开源镜像站下载、网易开源镜像下载搜狐开源镜像下载。 1.CentOS官网镜像下载 因为服务器在国外所以打开CentOS官方网站的时候可能会比较慢。大家可以选择后面几种国内镜像下载方式。 1.1进入CentO…...

STL学习-顺序容器-array数组

array模板类是C11引入。它是有着固定大小用于保存一系列同类型元素的顺序容容器&#xff0c;因此不能对它进行增加或者删除,只能使用或者替换它的元素值。 1.定义及初始化 array定义对象时,需要传入类型和大小,且大小不能修改。array是唯--个如果不初始化,它的初始化是不明确…...

Spring Boot框架下的酒店住宿登记系统

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…...

electron展示下载进度条

我们使用electron下载文件时&#xff0c;会发现不像浏览器一样会有地方展示下载进度&#xff0c;这导致下载一些大文件时不知道下载进度到哪里了 下面我们通过electron提供的will-download监听和element-plus中的ElNotification和ElProgress组件实现这一功能 实现逻辑 触发…...

Spark 基础操作

Spark 操作 创建操作(Creation Operation) 用于RDD创建工作。RDD创建只有两种方法&#xff0c;一种是来自于内存集合和外部存储系统&#xff0c;另一种是通过转换操作生成的RDD 转换操作(Transformation Operation) 将RDD通过一定的操作变成新的RDD&#xff0c;比如HadoopR…...

VoLTE 微案例:VoLTE 注册失败,I-CSCF 返回 403,HSS(UAR) 返回 5001

目录 1. 问题描述 2. 故障注册流程与正常流程对照 3. 结论 博主wx:yuanlai45_csdn 博主qq:2777137742 想要 深入学习 5GC IMS 等通信知识(加入 51学通信),或者想要 cpp 方向修改简历,模拟面试,学习指导都可以添加博主低价指导哈。 1. 问题描述...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...