爬虫技术笔记

一. Selenium技术

  1. 遇到安装并调用ChromeDriver问题:
    webdriver.Chrome DeprecationWarning: executable_path has been deprecated, please pass in a Service object

在 Selenium 4 中,executable_path 参数用于指定 ChromeDriver 的路径已经在 webdriver.Chrome() 构造函数中弃用(deprecated)。这个改变是为了增加更多的配置选项和更好的错误处理。

如果你之前是这样使用 webdriver.Chrome() 的:

from selenium import webdriverdriver = webdriver.Chrome(executable_path='/path/to/chromedriver')

现在你应该使用 Service 对象来替代 executable_path,像这样:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service# 创建一个Service对象,传入ChromeDriver的路径
s = Service('/path/to/chromedriver')# 使用Service对象初始化Chrome WebDriver
driver = webdriver.Chrome(service=s)

这样,你就可以继续在你的测试中使用 Selenium WebDriver,而无需担心弃用警告。

另外,如果你的测试代码库很大,或者你不希望更改太多代码,你还可以使用 webdriver_manager 这样的库来自动管理 WebDriver 的下载和路径。webdriver_manager 会自动为你下载最新版本的 WebDriver,并在运行时为你找到它。

安装 webdriver_manager

pip install webdriver_manager

使用 webdriver_manager

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager# 使用webdriver_manager自动下载和获取ChromeDriver的路径
driver = webdriver.Chrome(ChromeDriverManager().install())

这样,你就不需要担心 WebDriver 的路径问题了,webdriver_manager 会为你处理一切。

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

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

相关文章

SEO 中域权限和页面权限之间的区别

域权限 (DA) 和页面权限 (PA) 是 SEO(搜索引擎优化)中的两个重要概念,有助于评估网站和单个网页的强度和相关性。 目录 什么是域权限?什么是页面权限?主要区别结论 什么…

算法003:快乐数

这道题采用快慢双指针的方法。 为了弄清楚这个题到底是要我们干嘛,我们把整个过程类比一下: 不管是n19还是n2,我们都把它当成一种判断链表是否有环的方式。 对于n19,题干是这样解释的: 我们把它当成链表&#xff0c…

【STL源码剖析】priority_queue 优先队列的简单实现

水到绝处是风景 人到绝境是重生 目录 priority_queue的模拟实现 源码剖析: 代码测试: 契子✨ 我们之前不仅讲过 队列queue 还有 双端队列deque 而我们今天所讲的依旧是队列家族的成员 -- 优先队列priority_queue 顾名思义,priority_queue是…

空间搜索geohash概述

概述 通常在一些2C业务场景中会根据用户的位置来搜索一些内容。通常提供位置搜索的都是直接通过redis/mongodb/es等中间件实现的。 但是这些中间件又是怎么实现位置搜索的呢; 查了一番资料,发现背后一个公共的算法Geohash。 Geohash 经度和纬度是2个…

Amesim示例篇-案例2:液体循环回路

前文已完成流体库常用的元件参数与使用方法简单的介绍。本文将对液体回路系统管路的压降标定仿真方法与注意事项进行讨论。首先,本案例应用到的元件有膨胀水壶、水泵、阻力管、常规管路等元件。将上述元件进行串联组成液冷循环回路。 图1 膨胀水壶 图2 水泵 1…

如何让tracert命令的显示信息显示*星号

tracert命令如果在中间某一个节点超时,只会在显示信息中标识此节点信息超时“ * * * ”,不影响整个tracert命令操作。 如上图所示,在DeviceA上执行tracert 10.1.2.2命令,缺省情况下,DeviceA上的显示信息为:…

拼接屏处理器

拼接屏系统由三大部分组成,即拼接墙、液晶拼接处理器和信号源。其中液晶拼接处理器是关键技术的核心,支持不同像素的图像在大屏显示墙上显示以及在大屏显示墙上任意开窗口、BSV画面叠加、窗口放大缩小、跨屏漫游显示等。液晶拼接处理器一般分为两种&…

C# 中提取方法进行重构

文章目录 1、什么是提取方法重构技术?2、提取方法重构 C# 代码示例3、提取方法重构技术的好处4、提取方法重构有用的场景5、总结 C# 中的提取方法重构技术 1、什么是提取方法重构技术? 重构代码是软件工程师的一项重要技能,因为它有助于提高…

C++ AVL树 详细讲解

目录 一、AVL树的概念 二、AVL树的实现 1.AVL树节点的定义 2.AVL树的插入 3.AVL树的旋转 4.AVL树的验证 三、AVL树的性能 四、完结撒❀ 一、AVL树的概念 二叉搜索树虽可以缩短查找的效率,但 如果数据有序或接近有序二叉搜索树将退化为单支树,查 …

Redis限流方案

限流简介 限流算法在分布式领域是一个经常被提起的话题,当系统的处理能力有限时,如何阻止计划外的请求继续对系统施压,是一个需要重视的问题。 除了控制流量,限流还有一个应用目的是用于控制用户行为,避免垃圾请求&a…

Python基础语法(五):循环语句

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

企业公户验证API在Java、Python、PHP中的使用教程

在金融和商业领域,企业公户验证API是一种用于验证企业对公账户的真实性和合法性的技术解决方案。这种API通常由金融机构或第三方服务提供商提供,旨在帮助企业加快账户认证流程,提高效率,降低审核成本,并确保符合法规要…

苹果Safari怎么清理缓存?原来快速清除浏览器的历史记录那么容易

在数字化时代,互联网已经成为我们日常生活中不可或缺的一部分。我们使用各种设备,如智能手机、平板电脑和笔记本电脑来浏览网页、获取信息、娱乐和社交。而在这些设备中,iPhone无疑是最受欢迎的选择之一。iPhone搭载的Safari浏览器以其简洁的…

ui自动化中,鼠标操作

from selenium.webdriver import ActionChainsaction ActionChains(driver) # 然后把driver作为参数,实例化一个action对象 练习地址:https://sahitest.com/demo/ 悬停例子(百度首页) action.move_to_element(ele).perfor…

深入浅出服务网格(Service Mesh):现代微服务架构的护航者

什么是服务网格? 服务网格是一种专用于处理微服务间通信的基础设施层,通常以轻量级代理(sidecar)的形式部署在每个服务实例旁边。它主要负责以下几项任务: 服务发现:自动检测和注册服务实例,使…

Springboot注意点

1.Usermapper里加param注解 2.RequestParam 和 RequestBody的区别: RequestParam 和 RequestBody的区别: RequestParam 和 RequestBody 是Spring框架中用于处理HTTP请求的两个不同的注 get请求一般用url传参数,所以参数名和参数的值就在ur…

Type-C音频转接器方案

在数字化时代,音频设备作为我们生活中不可或缺的一部分,其连接方式的便捷性和高效性显得尤为重要。Type-C音频转接器,作为一种新型的音频连接解决方案,正逐渐走进我们的生活,以其独特的优势改变着我们的音频体验。 一、…

Vue Router 4与路由管理实战

title: Vue Router 4与路由管理实战 date: 2024/6/7 updated: 2024/6/7 excerpt: 这篇文章介绍了如何在Vue.js应用中利用Vue Router实现单页面应用的路由管理,包括配置路由、导航守卫的使用、路由懒加载以优化性能以及动态路由的实现方法,旨在提升用户体…

Python3 笔记:字符串的 strip()、lstrip()、rstrip()

1、strip() 方法用于移除字符串头尾指定的字符(默认为空格)或字符序列。 注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。 语法:str.strip([chars]) chars:移除字符串头尾指定的字符序…

JAVA多维动态数组

JAVA多维动态数组 一维数组数组大小 size()增加元素 add获取元素 get删除元素 remove修改元素 set输出 二维数组三维数组 ArrayList 类是一个可以动态修改的数组(队列),与普通数组的区别就是它是没有固定大小的限制,提供了相关的添…