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

python数据分析之爬虫基础:selenium详细讲解

目录

1、selenium介绍

2、selenium的作用:

 3、配置浏览器驱动环境及selenium安装

4、selenium基本语法

4.1、selenium元素的定位

4.2、selenium元素的信息

4.3、selenium元素的交互

5、Phantomjs介绍

6、chrome handless模式


 

1、selenium介绍

(1)selenium是一个用于web应用程序测试的工具。

(2)selenium测试直接运行在浏览器中,就像真正的用户在操作一样。

(3)支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驱动真是浏览器完成测试。

(4)selenium也是支持无界面浏览器操作的。

2、selenium的作用:

(1)可以模拟用户在浏览器中的各种操作,如点击按钮、输入文本、提交表单等,用于对web应用程序进行功能测试,回归测试等。

(2)可以用于自动化一些重复性的网页操作任务,如批量上传文件、定时执行任务,提高工作效率。

(3)爬取一些我们无法获取的数据,比如京东上的限时秒杀数据等等。 

 3、配置浏览器驱动环境及selenium安装

(1)操作chrome浏览器下载

浏览器的驱动要下载和浏览器配套的版本。将下载的浏览器驱动放到python的安装目录下,并配置系统环境变量。

4fdb8ff80e8c4efeaba853edd4050a5e.png安装地址:官网 

(2)selenium的安装

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium

(3)测试浏览器驱动是否正常

from selenium import webdriver
# 创建浏览器操作对象
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
input()

4、selenium基本语法

4.1、selenium元素的定位

元素定位:自动化要做的就是模拟鼠标和键盘来操作这些元素,点击、输入等等。操作这些元素首先要找到他们,webdriver提供很多元素定位的方法。

(1)id可以唯一定位到一个元素(以百度的百度一下四个字为例)

button =driver.find_element(By.ID,"su")

(2)name要确保是全局唯一的(以百度的文本搜索框为例)

button = driver.find_element(By.NAME,"wd")

(3)xpath全局唯一

button = driver.find_element(By.XPATH,"//input[@id='su']")

(4)tag name标签,即标签名字

button = driver.find_element(By.TAG_NAME,"input")

(5)css selector元素样式(通过bs4的语法来获取对象)

button = driver.find_element(By.CSS_SELECTOR, '#su')

(6)link text获取链接文本

button = driver.find_element(By.LINK_TEXT, '新闻')

4.2、selenium元素的信息

(1)通过get_attribute来获取class的属性值

input = driver.find_element(By.ID, 'su')
print(input.get_attribute('class'))

(2)通过text获取元素文本(只能获取两个标签之间的数据哦)

a = driver.find_element(By.LINK_TEXT, '新闻')
print(a.text)

(3)通过tag_name获取标签名

input = driver.find_element(By.ID, 'su')
print(input.tag_name)

4.3、selenium元素的交互

 (1)click点击对象(以点击百度一下按钮为例)

button = driver.find_element(By.ID,"su").click()

(2)send_keys在对象上模拟按键输入(搜索框中输入周杰伦)

input = driver.find_element(By.ID,"kw").send_keys("周杰伦")

(3)滑到底部

js_bottom = "document.documentElement.scrollTop=10000"
driver.execute_script(js_bottom)

(4)回退选项

driver.back()

(5)返回上一选项

driver.forward()

案例:在百度搜索框中搜索周杰伦,翻到最后一页,打开下一页,回退选项,在返回上一选项。最后退出浏览器

from selenium import webdriver
import time
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
url = "https://www.baidu.com"
driver.get(url)
time.sleep(2)
input = driver.find_element(By.ID,"kw").send_keys("周杰伦")
time.sleep(2)
button = driver.find_element(By.ID,"su").click()
time.sleep(2)
js_bottom = "document.documentElement.scrollTop=10000"
driver.execute_script(js_bottom)
time.sleep(2)
# 获取下一页的按钮
next_button = driver.find_element(By.XPATH,"//a[@class='n']").click()
time.sleep(2)
# 回退,回到上一页
driver.back()
time.sleep(2)
# 返回上一选项
driver.forward()
time.sleep(5)
driver.quit()

 

5、Phantomjs介绍

(1)是一个无界面的浏览器

(2)支持页面元素查找,js的执行等

(3)由于不进行css和gui渲染,运行效率要比真实的浏览器要快很多

 但是Phantomjs这个公司已经黄了,维护者已经辞职并停止维护了,因此这里就不讲解了。

6、chrome handless模式

chrome-handless模式,Google针对chrome浏览器59版本新增加的一种模式,可以在不打开UI界面的情况下使用chrome浏览器,所以运行效果与chrome保持一致。 

系统要求:

        chrome:

                Unix/Linux 系统需要 chrome >=59

                windows 系统需要 chrome >=60

        python版本 >=3.6

        selenium版本 >=3.4.*

        chromedriver版本 >=2.31

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=chrome_options)
url = "https://www.baidu.com"
driver.get(url)
driver.save_screenshot("screenshot.png")

 但这样每次都需要配置的话会比较麻烦,我们只要封装到函数里面,那么每次用只需要调用函数

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def share_browser():chrome_options = Options()chrome_options.add_argument('--headless')chrome_options.add_argument('--disable-gpu')driver = webdriver.Chrome(options=chrome_options)return driver
driver = share_browser()

 

相关文章:

python数据分析之爬虫基础:selenium详细讲解

目录 1、selenium介绍 2、selenium的作用: 3、配置浏览器驱动环境及selenium安装 4、selenium基本语法 4.1、selenium元素的定位 4.2、selenium元素的信息 4.3、selenium元素的交互 5、Phantomjs介绍 6、chrome handless模式 1、selenium介绍 (1…...

Tips--解决esptool经pyinstaller打包后无法使用的问题

esptool打包后失效解决方法 问题1原因解决方法问题2原因解决方法 问题1 esptool经过pyinstaller打包成exe后,提示错误:Stub flasher JSON file for esp32 not found 原因 pyinstaller在进行esptool打包的时候,通常不用讲Stub flaser Json文…...

Apache DolphinScheduler 限制秒级别的定时调度

背景 Apache DolphinScheduler 定时任务配置采用的 7 位 Crontab 表达式,分别对应秒、分、时、月天、月、周天、年。 在团队日常开发工作中,工作流的定时调度一般不会细化到秒级别。但历史上出现过因配置的疏忽大意而产生故障时间,如应该配…...

Oracle 数据库创建用户并分配只读的权限

引言 在 Oracle 数据库的日常运维和开发过程中,用户管理是确保数据安全与访问控制的关键环节。通过合理创建用户并分配适当的权限,可以有效防止未授权的访问和操作。本文将详细介绍如何在 Oracle 数据库中: 创建新用户并设置复杂密码。授予…...

2个GitHub上最近比较火的Java开源项目

1. SpringBlade 微服务架构 标题 SpringBlade 微服务架构 摘要 SpringBlade 是一个由商业级项目升级优化而来的微服务架构,采用Spring Boot 3.2、Spring Cloud 2023等核心技术构建,遵循阿里巴巴编码规范,提供基于React和Vue的两个前端框架&am…...

【jvm】为什么要有GC

目录 1. 自动内存管理2. 提升程序稳定性3. 优化性能4. 跨平台能力5. 分代回收策略 1. 自动内存管理 1.JVM中的GC机制负责自动管理内存,这意味着开发人员不需要手动分配和释放内存。2.这一特性大大简化了Java程序的内存管理,降低了内存泄漏和内存溢出等问…...

【Rhino】【Python】根据contour创建地形mesh

将surface生成open curve封闭 #codingutf-8 import rhinoscriptsyntax as rs import mathdef adjust_endpoints():# 获取指定图层中的所有曲线all_objects rs.ObjectsByLayer("Level 19")if not all_objects:print("在Level 19图层中未找到对象")return#…...

蓝桥杯软件赛系列---lesson1

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 我们今天会再开一个系列,那就是蓝桥杯系列,我们会从最基础的开始讲起,大家想要备战明年蓝桥杯的,让我们一起加油。 工具安装 DevC…...

NanoLog起步笔记-1

nonolog起步笔记-1 背景与上下文写在前面Nanolog与一般的实时log的异同现代log的一般特性Nanolog的选择 背景与上下文 因为工作中用到了NanoLog。有必要研究一下。 前段时间研究了许多内容,以为写了比较详实的笔记,今天找了找,不仅笔记没找到…...

汽车车牌标记支持YOLO,COCO,VOC三种格式标记,4000张图片的数据集

本数据集支持YOLO,COCO,VOC三种格式标记汽车车牌,无论是新能源汽车还是油车都能识别标记,该数据集一共包含4000张图片 数据集分割 4000总图像数 训练组 70% 2800图片 有效集 20% 800图片 测…...

leetcode33.搜索旋转排序数组

整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], ..., nums[n-1], nums[0], nums[1], ..…...

Ansible自动化运维(三)playbook剧本详解

Ansible自动化运维这部分我将会分为五个部分来为大家讲解 &#xff08;一&#xff09;介绍、无密钥登录、安装部署、设置主机清单 &#xff08;二&#xff09;Ansible 中的 ad-hoc 模式 模块详解&#xff08;15&#xff09;个 &#xff08;三&#xff09;Playbook 模式详解 …...

通过PS和Unity制作2D动画之二:IK的使用

一、IK的概念 IK&#xff1a;Inverse Kinematics&#xff0c;反向动力学。 &#xff08;1&#xff09;正向动力学 在骨骼动画中&#xff0c;构建骨骼的方法被称为正向动力学。它的表现形式是&#xff1a;子骨骼&#xff08;关节&#xff09;的位置根据父骨骼&#xff08;关节…...

图像边缘检测原理和常用检测算子及MATLAB实现

一、边缘和边缘检测的概念 图像边缘是指图像中灰度值发生急剧变化的地方&#xff0c;这些变化通常对应于图像中物体的轮廓、边界或纹理的突变处。在数字图像处理中&#xff0c;边缘是图像的一个重要特征&#xff0c;它包含了关于物体形状、位置和大小等关键信息。 边缘检测是数…...

企业经营数据分析系统:提升决策能力的利器

搭建企业经营数据分析系统是当今企业绕不开的话题&#xff0c;企业想要在竞争激烈的市场当中突围而出&#xff0c;需要对于企业内部的各种数据了然于胸&#xff0c;同时对于外部的数据也有敏锐的把握能力&#xff0c;因此企业构建自身的经营性数据分析系统就显得尤其重要。作为…...

【49】AndroidStudio构建其他人开发的Android项目

(1)做Android软件开发&#xff0c;通常会看一些其他人开发的项目源码&#xff0c;当将这些项目的源码通过git clone到本地之后&#xff0c;用AndroidStudio进行打开时&#xff0c;通常会遇到一些环境配置的问题。本文即用来记录在构建他人开发项目源代码这一过程中遇到的一些常…...

Oracle 数据库中SERIALLY_REUSABLE包是一种特殊的包类型

1、SERIALLY_REUSABLE 包概述 在 Oracle 数据库中&#xff0c;SERIALLY_REUSABLE包是一种特殊的包类型。这种包的目的是为了更有效地利用内存&#xff0c;特别是在高并发环境下。当一个会话调用SERIALLY_REUSABLE包中的过程或函数时&#xff0c;该包的状态&#xff08;包括变量…...

css基础记录

基础 选择器 复合选择器 后代选择器 div p {}; 类似如上,找到div中所有的后代,注意是所有的后代 子代选择器 > div > a 只选择div的儿子中有a的 并集选择器 用逗号,分隔 p,div,span,h1 { … } 一般一行写一个 CSS元素显示模式 分为块元素,行内元素 块元素 特点…...

Python后端 -- 万字长文全面解析Django框架

自从2005年诞生以来&#xff0c;Django因其“开发速度快、安全性高”的特点迅速成为许多开发者的首选。无论是小型的个人项目&#xff0c;还是大型的企业应用&#xff0c;Django都能游刃有余地满足需求。我们将从Django的基础知识带你全面掌握Django&#xff0c;从基础知识到高…...

el-thee懒加载删除某条数据 ,el-thee懒加载重置,el-thee刷新某个节点

一、懒加载的tree已经全部展开&#xff0c;外部点击删除的时候不需要重新展开点击获取下一层数据 <template> <el-treeref"tree":data"treeData":props"defaultProps"render-after-expandhighlight-currentlazy:expand-on-click-node&q…...

【PyQt5教程 四】Qt Designer 样式表(styleSheet)实现基本小部件的自定义动态效果和资源浏览器背景添加方法

目录 一、成果演示&#xff1a; 二、样式表的使用方法: &#xff08;1&#xff09;样式表语法和属性&#xff1a; &#xff08;2&#xff09;样式表代码示例&#xff1a; &#xff08;3&#xff09;伪类和状态&#xff1a; &#xff08;4&#xff09;复合选择器&#xff…...

【git】--- 通过 git 和 gitolite 管理单仓库的 SDK

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。【git】--- 通过 git 和 gitolite 管理单仓库的 SDK 开发环境一、安装配置 gitolite二…...

计算机网络之NAT、代理服务、内网穿透、内网打洞

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 计算机网络之NAT、代理服务、内网穿透、内网打洞 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论…...

2024-金盾信安杯线上赛 WP

Misc 大赛宗旨 记事本打开&#xff0c;一眼零宽隐写 B 神工具一把梭&#xff0c;得到一串 base 编码 base64 解码得到 flag flag 值&#xff1a;flag{5d5555fa-1303-4b43-8eef-d6ea7c64c361} esab 根据题目 esab 可以发现这正是 base 的逆向&#xff0c;所以可以先逆向一下…...

MySQL 基础架构

MySQL的基础架构主要由三大核心部分构成&#xff0c;以下是详细的解析&#xff1a; 一、连接层 连接层是客户端与MySQL数据库之间的桥梁&#xff0c;主要负责通信和身份验证&#xff0c;确保数据交换的安全与稳定。具体来说&#xff0c;它负责以下任务&#xff1a; 建立连接…...

汽车升级到底应不应该设置“可取消“功能

最近&#xff0c;汽车OTA&#xff08;Over-the-Air&#xff09;升级频频成为车主讨论的热点。有些车主反映&#xff0c;一些升级增加了实用功能&#xff0c;而另一些却让体验变得复杂甚至带来不便。于是&#xff0c;大家不禁发问&#xff1a;汽车升级功能究竟应不应该允许“可取…...

【MySQL】mysql中的事务

目录 1、背景2、事务的特性3、事务之间的几种错误【1】脏读【2】不可重复读【3】幻读 4、事务中的隔离级别5、总结 1、背景 事务是存储引擎层面实现的&#xff0c;有的引擎支持事务&#xff0c;有的引擎不支持事务&#xff0c;我们常用的引擎InnoDB就支持事务&#xff0c;本文…...

大语言模型(LLM)与智能机器人的应用分析

系列文章目录 前言 近年来,大型语言模型(LLM)的集成彻底改变了机器人领域,使机器人能够以人类熟练程度进行交流、理解和推理。本文探讨了 LLM 对机器人的多方面影响,并针对在不同领域利用这些模型的关键挑战和机遇进行了研究。通过将 LLM 应用程序分类并分析核心机器人元素…...

Inno Setup 学习笔记(一)

前言 最近想把自己写的Windows端的软件打包成安装程序exe&#xff0c;又觉得自带的界面太丑了&#xff0c;想自己完全做一个新的页面 网上找到的只有基础教程&#xff0c;记录一下进阶学习过程 生命周期 按照Vue的说法叫生命周期&#xff0c;Inno Setup中叫 Pascal 脚本: 事…...

从阿里云EDM到美团云:典型微服务治理平台的实战经验分享

目录 一. 阿里云 EDM&#xff08;Enterprise Distributed Application Service&#xff09; 二. 腾讯云 TSF&#xff08;Tencent Service Framework&#xff09; 三. 华为云 FusionStage 四. 京东云 JDC&#xff08;JD Cloud Microservice Platform&#xff09; 五. 百度智…...

企业头像logo设计/网站自然排名优化

一、GPT定时器简介 以前的延时函数采用空指令来实现&#xff0c;延时不准确且浪费cpu性能。当修改了6ull的主频以后&#xff0c;采用空指令延时函数就不准了。 因此需要一个高精度的延时函数&#xff0c;并且不随着主频的变化而改变。 stm32 使用 SYSTICK 这个硬件定时器来实现…...

中建八局一公司总部在哪/苏州网站seo优化

首先需要下载MySQL: 1. 官方下载 dev.mysql.com/downloads/mysql/ 2. 解压到你所想要安装的位置&#xff0c;在文件夹里创建my.ini文件 1 [mysql]2 # 设置mysql客户端默认字符集3 default-character-setgbk4 [mysqld]5 #设置3306端口6 port 3306 7 # 设置mysql的安装目录8 bas…...

广告发布形式有哪几种/seo推广公司有哪些

建立池连接可以显著提高应用程序的性能和可缩放性。SQL Server .NET Framework 数据提供程序自动为 ADO.NET 客户端应用程序提供连接池&#xff08;MSDN&#xff09;。<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />Opening a …...

南宁手机建站公司/淘宝关键词优化技巧教程

点击上方蓝字关注我们1前言曾几何时&#xff0c;”云”还是指天上飘的那一朵朵白色的雾团&#xff0c;现在互联网上家家都说自己是”xx云”。“云”这个词&#xff0c;已经被赋上了新的含义。其实真正在做”云”的企业没几家。这篇文章会告诉大家&#xff0c;究竟什么是”云”&…...

上海购物网站建设/链接搜索

maven项目,maven-install总是出现这个错误,气死了, 查阅资料终于找到解决办法: 原因 这是由于缺少maven-resources-plugin-2.4.3.jar文件。这个文件是在{user.home}\.m2\repository\org\apache\maven\plugins\maven-resources-plugin\下。{user.home}是maven的配置路径&#xf…...

wordpress 主机服务主题/建网站的步骤

1 把lineEdit上的中文保存到一个字符数组里,使用 toUtf8().data()保存。 strcpy(array,ui->lineEdit->text().toUtf8().data()); 2 把array的中文字符显示在lineEdit上,使用QString::fromUtf8() ui->picturelineEdit->setText(QString::fromUtf8(array)); 3 可以…...