Python selenium
1.搭建环境
1.安装:
pip install msedge-selenium-tools
不要使用pip install selenium,我的电脑上没法运行
2.下载驱动
Microsoft Edge WebDriver |Microsoft Edge 开发人员
edge浏览器点设置---关于即可找到版本号,一定要下载对应版本的驱动
我的电脑是64位的,下载了x64的,但是运行时报错:OSError: [WinError 216] 该版本的 %1 与你运行的 Windows 版本不兼容。请查看计算机的系统信息,然后联系软件发布者。
下载win32的selenium解决
又报错:ValueError: Timeout value connect was <object object at 0x000001C609CC8630>, but it must be an int, float or None.
python selenium报错ValueError: Timeout value connect was <...>, but it must be an int, float or None._raise valueerror( valueerror: timeout value connec-CSDN博客
python selenium报错ValueError: Timeout value connect was <...>, but it must be an int, float or None._raise valueerror( valueerror: timeout value connec-CSDN博客
继续报错:ModuleNotFoundError: No module named 'urllib3.packages.six.moves'
pip show selenium
Name: selenium
Version: 3.141.0
Summary: Python bindings for Selenium
Home-page: https://github.com/SeleniumHQ/selenium/
Author: UNKNOWN
Author-email: UNKNOWN
License: Apache 2.0
Location: C:\Users\15269\AppData\Local\Programs\Python\Python312\Lib\site-packages
Requires: urllib3
Required-by: msedge-selenium-tools
重装1.26.12的urllib3解决(我使用的是python3.12)如果还不行就多换几个试试
测试代码
from msedge.selenium_tools import Edge, EdgeOptionsoptions = EdgeOptions()
options.use_chromium = True
options.add_experimental_option('excludeSwitches',['enable-automation']) # 开启开发者模式
options.add_argument('--disable-blink-features=AutomationControlled') # 禁用启用Blink运行时的功能
options.binary_location = r'C:\Program Files (x86)\Microsoft\EdgeCore\113.0.1774.50\msedge.exe'
url = 'https://www.baidu.com/'driver = Edge(options=options, executable_path='./msedgedriver.exe')
driver.get(url)
二、带有用户数据的爬虫参考
以下内容转载自这位大佬的博客:
使用 Selenium 启动的 Chrome 浏览器,默认是无法使用本地数据的,如表单项、密码、Cookies 等。
原因分析
这是由于 Selenium 在启动 Chrome 时,默认将命令行参数
--user-data-dir(该参数用于设置用户数据目录)设为了一个“临时目录”,如下图所示:
在 Selenium 启动的 Chrome 浏览器的地址栏中输出
chrome://version并回车,就可以打开上图这个界面。查看默认的用户数据目录的
手动打开一个 Chrome 浏览器,在地址栏中输出
chrome://version并回车,找到Profile Path:后面的路径,去掉最后的\Default,就是默认的用户数据目录,它一般都是:C:\Users\Your_User_Name\AppData\Local\Google\Chrome\User Data。将默认的用户数据目录设为 Selenium 启动的 Chrome 的用户数据目录
代码如下:
import time from selenium import webdriver from selenium.webdriver.chrome.service import Serviceoptions = webdriver.ChromeOptions() options.add_argument(r'user-data-dir=C:\Users\Your_User_Name\AppData\Local\Google\Chrome\User Data') # --user-data-dir 前的两个短杠似乎有没有均可browser = webdriver.Chrome(options=options,service=Service() # 需要将 Chrome 驱动放在此文件的同一目录下 )browser.get('https://mail.163.com/') # 此处以 163 邮箱为例,因为 163 邮箱的 Cookies 可以在本地保存 30 天。 time.sleep(120)
对于edge浏览器:edge://version/
三、实战应用
stm官网登录
登陆界面网址:登录注册 (stmicroelectronics.cn)
右键检查,找到用户名&密码&登录按钮的路径,并写出相应js代码。之后在控制台测试

document.getElementById("username").value = "你的用户名"
document.getElementById("password").value = "你的密码"
document.querySelector(".an_lan").click() //登录
完整代码
from msedge.selenium_tools import Edge, EdgeOptionsclass Demo:def __init__(self) -> None:#keep alive为True,即处理完后不会关闭edgeoptions = EdgeOptions()options.use_chromium = Trueoptions.add_experimental_option('excludeSwitches',['enable-automation']) # 开启开发者模式#用户数据#options.add_argument(r'user-data-dir=C:\Users\15269\AppData\Local\Microsoft\Edge\User Data')options.add_argument('--disable-blink-features=AutomationControlled') # 禁用启用Blink运行时的功能options.binary_location = r'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe'self.webdriver = Edge("./msedgedriver.exe", keep_alive=True, options=options)self.login_url = r"https://sso.stmicroelectronics.cn/User/LoginByPassword"self.username = "。。。"self.password = "@。。。"def login(self):payload = f"""document.getElementById("username").value = "{self.username}"document.getElementById("password").value = "{self.password}"document.querySelector(".an_lan").click() //登录"""self.webdriver.get(self.login_url)self.webdriver.execute_script(payload)def run(self):self.login()if __name__ == "__main__":Demo().run()
相关文章:
Python selenium
1.搭建环境 1.安装: pip install msedge-selenium-tools 不要使用pip install selenium,我的电脑上没法运行 2.下载驱动 Microsoft Edge WebDriver |Microsoft Edge 开发人员 edge浏览器点设置---关于即可找到版本号,一定要下载对应版…...
Python内置函数next()详解
Python的next()函数是一个内置函数,用于从迭代器中获取下一个元素。如果迭代器耗尽,则抛出StopIteration异常。 函数定义 next()函数的基本语法如下: next(iterator[, default])iterator:一个迭代器对象。default:可…...
初识指针(1)<C语言>
前言 指针是C语言中比较难的一部分,大部分同学对于此部分容易产生“畏难情结”,但是学习好这部分对C语言的深入很大的帮助,所以此篇主要以讲解指针基础为主。 指针概念 变量创建的本质就是在内存中申请空间,找到这个变量就需要地址…...
uniapp使用vconsole调试 兼容App
前言:引入vconsole发现uniapp打出来的包里,看不到vconsole,uniapp开发的h5需要使用vconsole真机调试,如果直接在main.ts引入,打包后整个项目会页面空白,经实验在单个页面引入可解决,以下是解决方…...
论文笔记模版
1. 摘要 1.1 背景 1.2 挑战 1.3 提出新方法 1.4 贡献 2. 引言 2.1 背景(引出问题) ①介绍大背景: ② 应用场景: ③ 介绍主题: 2.2 引出挑战 一般用图表来展现出我们的挑战(直观,解决什…...
docker-本地私有仓库、harbor私有仓库部署与管理
一、本地私有仓库: 1、本地私有仓库简介: docker本地仓库,存放镜像,本地的机器上传和下载,pull/push。 使用私有仓库有许多优点: 节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下…...
【Go 语言入门专栏】Go 语言的起源与发展
前言 Go 语言是当下最为流行的编程语言之一,大约在 2020、2021 年左右开始于国内盛行,许多大厂很早就将部分 Java 项目迁移到了 Go,足可看出其在性能方面的优越性。 相信各位都知道,在爬虫业务中,并发是一个关键的需…...
发电机组远程管理,提升管控力,降低运维成本
发电机组是指发电机发动机以及控制系统的总称,用来把发动机提供的动能转化为电能。它通常由动力系统、控制系统、消音系统、减震系统、排气系统组成。发电机组远程管理系统利用物联网技术与PLC远程控制模块集成解决方案,在提高发电机组的运行效率、降低运…...
java将文件压缩打包后进行下载
今天受到一个需求,需要查出文件,然后将文件打包后下载。看了下项目里默认代码有压缩功能,以此修改了下,项目使用了hutool。项目是若依项目 定义zip的数据传输对象,ossId可以是文件表的id Data public class SysOssZi…...
【4/26-4/30】 Arxiv安全类文章速览
4/26 标题: Merchants of Vulnerabilities: How Bug Bounty Programs Benefit Software Vendors 作者: Esther Gal-Or, Muhammad Zia Hydari, Rahul Telang摘要: 软件漏洞允许恶意黑客利用,威胁系统和数据安全。本文研究了激励道德黑客发现并负责任地向软件供应商披…...
活动图与状态图:UML中流程图的精细化表达——专业解析系统动态性与状态变迁
流程图是一种通用的图形表示法,用以展示步骤、决策和循环等流程控制结构。它通常用于描述算法、程序执行流程或业务过程,关注于任务的顺序执行。流程图强调顺序、分支和循环,适用于详细说明具体的处理步骤,图形符号相对基础和通用…...
Easy TCP Analysis提供了四大特性,兼顾了TCP数据包分析入门学习到实战问题排查不同阶段用户对工具的需求
一款兼顾TCP数据包分析入门学习和实战不同阶段用户需求的工具 Easy TCP Analysis是一款在线TCP数据包分析工具,致力于让TCP数据包分析变得跟看聊天记录一样简单! Easy TCP Analysis提供了四大特性,兼顾了从入门学习到实战分析不同阶段用户对…...
【2】STM32·FreeRTOS·任务创建和删除
目录 一、任务创建和删除的API函数 1.1、动态创建任务函数 1.2、静态创建任务函数 1.3、任务删除函数 二、任务创建和删除(动态方法) 三、任务创建和删除(静态方法) 一、任务创建和删除的API函数 任务的创建和删除本质就是…...
日志审计系统在提高网络安全方面具有哪些重要的作用
随着信息技术的飞速发展,我们正处于一个高度互联、数据驱动的网络时代。在这个时代,日志审计系统作为网络安全和信息管理的重要工具,发挥着至关重要的作用。下面德迅云安全就详细介绍下关于日志审计系统在当今网络时代的重要性。 一、什么是日…...
二维泊松方程(Neumann+Direchliet边界条件)有限元Matlab编程求解|程序源码+说明文本
专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…...
13_Scala面向对象编程_伴生对象
文章目录 1.伴生对象1.1 scala的一个性质,scala文件中的类都是公共的;1.2 scala使用object关键字也可以声明对象; 3.关于伴生对象和类4.权限修饰符,scala仅有private;5.伴生对象可以访问伴生类中的私有属性;6.案例7.伴…...
RS485空调系统到BACnet江森楼宇系统的高效整合攻略
智慧城市的每一栋建筑都在追求更高的能效与更佳的居住体验,而这一切的实现离不开强大且灵活的楼宇自动化系统。其中,协议转换网关作为连接不同设备的纽带,扮演着至关重要的角色。本文将以一个典型的商业综合体为例,揭秘BACnet协议…...
Springboot集成Redis操作缓存-06
Redis简介 Redis(Remote Dictionary Server),即远程字典服务,是一个开源的、使用ANSI C语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 功能特点 数据结构丰富&#…...
【WPF】聊聊WPF中INotifyPropertyChanged [TOC]
聊聊WPF中INotifyPropertyChanged 文章目录 聊聊WPF中INotifyPropertyChanged一、INotifyPropertyChanged接口二、DataContext2.1/DataContext作用2.2/DataContext特性2.3/DataContext实例 三、INotifyPropertyChanged接口的几种实现方式3.1/简单INotifyPropertyChanged绑定3.2…...
SpringBoot Actuator未授权访问漏洞的解决方法
1. 介绍 Spring Boot Actuator 是一个用于监控和管理 Spring Boot 应用程序的功能模块。它提供了一系列生产就绪的功能,帮助你了解应用程序的运行状况,以及在运行时对应用程序进行调整。Actuator 使用了 Spring MVC 来暴露各种 HTTP 或 JMX 端点&#x…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...
GAN模式奔溃的探讨论文综述(一)
简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...
表单设计器拖拽对象时添加属性
背景:因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...
Web APIS Day01
1.声明变量const优先 那为什么一开始前面就不能用const呢,接下来看几个例子: 下面这张为什么可以用const呢?因为复杂数据的引用地址没变,数组还是数组,只是添加了个元素,本质没变,所以可以用con…...
CMake系统学习笔记
CMake系统学习笔记 基础操作 最基本的案例 // code #include <iostream>int main() {std::cout << "hello world " << std::endl;return 0; }// CMakeLists.txt cmake_minimum_required(VERSION 3.0)# 定义当前工程名称 project(demo)add_execu…...

