selenium在Pycharm中结合python的基本使用、交互、无界面访问

news2024/11/26 23:49:03

下载

下载与浏览器匹配的浏览器驱动文件,这里一定注意的是,要选择和浏览器版本号相同的驱动程序,否则后面会有很多问题。

(1)浏览器(以google为例)版本号的查询:

我这里的版本号是124版本,所以要下载对应版本号的驱动文件

1.ChromeDriver 国内下载地址:Get WebDriver - Download WebDriver ChromeDriver

2.版本号在114之前的选择如下地址:chromedriver.storage.googleapis.com/index.html

安装selenium

下载selenium包:

pip install selenium

建议安装较低版本的selenium,这里建议安装4.5.0版本,否则可能会出现闪退问题

pip install selenium==4.5.0

selenium入门

(1)将下载的chromedriver包解压得到chromedriver.exe,并放到要使用的当前目录下:

(2)在所需要使用的文件中导入selenium

# (1) 导入selenium
from selenium import webdriver

(3)创建浏览器操作对象

# (2) 创建浏览器操作对象
browser = webdriver.Chrome()

(4) 访问网站

# 访问网址
url = 'https://www.jd.com/'    #以访问京东为例
browser.get(url)

(5) page_source获取网页源码

# 获取网网页源码 page_source获取网页源码
content = browser.page_source
print(content)

技元素定位方法

需要先导入By

from selenium.webdriver.common.by import By

(1)使用id来找到对象

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

(2)根据xpath语句来获取对象

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

(3)根据bs4表示语句来获取对象

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

(4)根据标签名字来获取对象

button = driver.find_element(By.TAG_NAME, 'input')
print(button)

(5)根据标签名字来获取对象[返回列表,多个]

button = driver.find_elements(By.TAG_NAME, 'input')
print(button)

(6)链接文本

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

交互

(1)在文本框中输入内容【send_keys】

# 获取文本框对象
input  = broswer.find_element(By.ID, 'kw')
# 在文本框中输入周杰伦
content = input.send_keys('袁隆平')

(2)点击按钮

# 获取百度一下的按钮
baiduyixia  = broswer.find_element(By.ID, 'su')
# 点击一下按钮
baiduyixia.click()

(3)滑到底部[执行脚本]

js_bottom = 'document.documentElement.scrollTop=100000'
broswer.execute_script(js_bottom)

(4)获取下一页按钮并执行点击

# 创建浏览器对象
broswer = webdriver.Chrome()
broswer.forward()  #前进

(5)回退到上一页

broswer = webdriver.Chrome()
broswer.back()  #后退

(6)关闭浏览器

broswer = webdriver.Chrome()
broswer.quit()   #关闭浏览器

优化

(1)handless

      selenium默认是有页面的,所以会存在加载大量css和js。针对这一问题,selenium下的handless可以实现无界面访问,提高访问速度和效率。

# 基本配制
def share_browser():
     options = webdriver.ChromeOptions()  # 创建配置对象
     options.add_argument('--headless')  # 无头参数,浏览器隐藏在后台运行
     options.add_argument('--window-size=1920x1080')  # 设置浏览器分辨率(窗口大小)
     options.add_argument('--disable-gpu')  # 禁用GPU加速
     browser = webdriver.Chrome(options=options)  # 创建浏览器对象
     return browser

以访问csdn为例演示一个小案例:

from selenium import webdriver

def share_browser():
     options = webdriver.ChromeOptions()  # 创建配置对象
     options.add_argument('--headless')  # 无头参数,浏览器隐藏在后台运行
     options.add_argument('--window-size=1920x1080')  # 设置浏览器分辨率(窗口大小)
     options.add_argument('--disable-gpu')  # 禁用GPU加速
     browser = webdriver.Chrome(options=options)  # 创建浏览器对象
     return browser

broswer = share_browser()

url = 'https://www.csdn.net/'    # 访问csdn页面

broswer.get(url)
broswer.save_screenshot('csdn.png')

快照

 关于options的更多配置,请看:Selenium自动化教程02:浏览器options配置及常用的操作方法_selenium options-CSDN博客

(2) phantomjs

phantomjs也可以实现无界面,但现已经被启用,且操作较handless为麻烦,固不推荐。

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

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

相关文章

RT-Thread V5.2.0版本尝鲜

文章目录 配置界面的更新新旧内核生成的二进制文件大小差异旧版本V5.1.0内核旧版本V5.2.0内核 配置界面的更新 尝试将手头RT-Thread工程的OS部分源码进行了更新,发现不少新的变化 配置界面变得更醒目: 配置变更保存提醒界面更新: 新旧内核…

Android Widget开发代码示例详细说明

因为AppWidgetProvider扩展自BroadcastReceiver, 所以你不能保证回调函数完成调用后,AppWidgetProvider还在继续运行。 a. AppWidgetProvider 的实现 /*** Copyright(C):教育电子有限公司 * Project Name: NineSync* Filename: SynWidgetProvider.java * Author(S…

【Node.js工程师养成计划】之原生node开发web服务器

一、使用node创建http服务器 var http require(http);// 获取到服务器实例对象 var server http.createServer() server.listen(8080, function() {console.log(http://127.0.0.1:8080); })server.on(request, function(req, res){console.log(request);res.write(6666666688…

VitePress 构建的博客如何部署到 github 平台?

VitePress 构建的博客如何部署到 github 平台? 1. 新建 github 项目 2. 构建 VitePress 项目 2.1. 设置 config 中的 base 由于我们的项目名称为 vite-press-demo,所以我们把 base 设置为 /vite-press-demo/,需注意前后 / export default…

【数据结构与算法(C语言)】1. 线性表的顺序存储

文章目录 前言一. 线性表插入和删除1. 元素的插入2. 元素的删除 二. 代码三. 优缺点 前言 线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据结构 一. 线性表插入和删除 1. 元素的插入 插入位置之后的数据都向后移一位,上图中元…

chrome 安装devtools

chrome 安装devtools 下载安装 链接:https://github.com/vuejs/devtools 选择对应版本: 安装yarn 下载 npm install -g yarn --registryhttps://registry.npmmirror.com进入下载的目录安装依赖 yarn install --registryhttps://registry.npmmirror.…

ASP.NET汽车销售管理系统的设计与开发

摘 要 随着人们生活水平的不断提高,人们对汽车的消费和需求也越来越旺盛。很多汽车销售公司的业务环节仍然运用人工记账的传统方法,既容易出错又会导致账目混乱,查询和统计起来也非常不方便,费时又费力,严重时会给公…

stm32单片机开发二、定时器-内部时钟中断和外部时钟中断、编码器

定时器本质就是一个计数器 案例:定时器定时中断 内部时钟中断 Timer_Init(); //定时中断初始化 /*** 函 数:定时中断初始化* 参 数:无* 返 回 值:无*/ void Timer_Init(void) {/*开启时钟*/RCC_APB1PeriphClockCmd(RCC…

CSS-复合选择器

作用&#xff1a; 后代选择器&#xff1a; 子代选择器 并集选择器 用逗号隔开&#xff0c;在style里面写的时候&#xff0c;每一个标签空一行。 <title>Document</title><style>p,div,span{color: aqua;}</style> </head> <body><p>…

在Linux操作系统中关于磁盘(硬盘)管理的操作

电脑中数据存储设备&#xff1a;硬盘&#xff08;实现数据的持久化存储&#xff09;&#xff0c;内存 在Linux操作系统中一切皆文件的思想&#xff0c;所有的设备在Linux操作系统中都是通过文件来标识的&#xff0c;所以每一个硬盘都对应一个块设备文件。 在Linux操作系统中所…

Golang | Leetcode Golang题解之第55题跳跃游戏

题目&#xff1a; 题解&#xff1a; // 贪心算法 func canJump(nums []int) bool {cover : 0n : len(nums)-1for i : 0; i < cover; i { // 每次与覆盖值比较cover max(inums[i], cover) //每走一步都将 cover 更新为最大值if cover > n {return true}}return false } …

YOLov5 + Gradio搭建简单的Web GUI

写在前面&#xff1a;当我们将模型训练出来了&#xff0c;此时就需要做UI界面给别人展示了。python提供的Gradio可以快速的搭建web页面。生成本地网址和公网网址&#xff0c;方面自己测试和用户测试。 一、安装 Gradio介绍 Gradio是一个开源的python库&#xff0c;用于构建机…

深度学习模型Deep Learning Model

什么是深度学习&#xff1f;&#xff1f; 深度学习模型是一种基于人工神经网络&#xff08;Artificial Neural Networks, ANN&#xff09;的机器学习模型&#xff0c;其核心思想是通过多层次的神经网络结构来学习数据的特征表示和模式。这些模型通常由多个层次&#xff08;深度…

WPS的JS宏如何设置Word文档的表格的单元格文字重新编号

希望对Word文档中的表格进行统一处理&#xff0c;表格内的编号&#xff0c;有时候会出现紊乱&#xff0c;下一个表格的编号承接了上一个表格的编号&#xff0c;实际需要重新编号。 当表格比较多时&#xff0c;手动更改非常麻烦&#xff0c;而且更改一遍并不能完成&#xff0c;…

测算sample gpt

测算代码 import pandas as pd import matplotlib.pyplot as pltlosspd.read_pickle("loss_8.pkl") plt.plot(loss) losspd.read_pickle("loss_16.pkl") plt.plot(loss) losspd.read_pickle("loss_4_8.pkl") plt.plot(loss) losspd.read_pickle(…

第5篇:创建Nios II工程之Hello_World<四>

Q&#xff1a;最后我们在DE2-115开发板上演示运行Hello_World程序。 A&#xff1a;先烧录编译Quartus硬件工程时生成的.sof文件&#xff0c;在FPGA上成功配置Nios II系统&#xff1b;然后在Nios II Eclipse窗口右键点击工程名hello_world&#xff0c;选择Run As-->Nios II …

低代码+定制物资管理:创新解决方案探析

引言 在当今快速变化的商业环境中&#xff0c;企业面临着不断增长的挑战&#xff0c;如提高效率、降低成本、满足客户需求等。为了应对这些挑战&#xff0c;企业需要不断创新并采用先进的技术解决方案。在这样的背景下&#xff0c;低代码开发和定制化物资管理成为了引领企业变…

03.Kafka 基本使用

Kafka 提供了一系列脚本用于命令行来操作 kafka。 1 Topic 操作 1.1 创建 Topic 创建一个名为 oldersix-topic 的 topic&#xff0c;副本数设置为3&#xff0c;分区数设置为2&#xff1a; bin/kafka-topics.sh \ --create \ --zookeeper 192.168.31.162:2181 \ --replication…

Blender曲线操作

1.几种常见建模方式 -多边形建模&#xff1a;Blender&#xff0c;C4D&#xff0c;3DsMax&#xff0c;MaYa -曲线&#xff1a; -曲面&#xff1a;Rhino&#xff08;Nurbs&#xff09; -雕刻&#xff1a;Blender&#xff0c;ZBrush -蜡笔&#xff1a;Blender 1&#xff09;新…

编译报错 - Missing trailing comma comma-dangle or Missing semicolon semi

一、comma-dangle规则&#xff1a; 这种错误通常出现在使用代码格式检查工具&#xff08;如ESLint&#xff09;时&#xff0c;具体是在JSON或者JavaScript对象、数组的最后一个元素后面缺少了逗号&#xff08;trailing comma&#xff09;。在某些编码标准中&#xff0c;要求在…