python selenium4 EdgeDriver动态页面爬取

截止至2024.7.16

chrome浏览器最新版本为126.0.6478.127

但对应的chromeDriver版本都低于此版本,因此,转用Edge浏览器

说明:仅记录自己使用过程中用到的一些代码和感受,看具体情况不定期更新。

 selenium官方文档

1、安装selenium及下载EdgeDriver

pip install selenium

edgeDriver下载地址

2、在环境变量的path中,放入EdgeDriver的路径

3、抓取

import random
from selenium import webdriver
from selenium.webdriver.common.by import ByUSER_AGENT_LIST = [   'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Chrome/2.0.174.0 Safari/530.6','Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.3.154.6 Safari/525.19','Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.599.0 Safari/534.13','Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.8 (KHTML, like Gecko) Chrome/7.0.521.0 Safari/534.8','Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b2pre) Gecko/20081015 Fennec/1.0a1','Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5'
]def user_agent():return random.choice(USER_AGENT_LIST)url ='待爬网址'
edge_options = webdriver.EdgeOptions()
edge_options.use_chromium = True  # 指定使用基于Chromium的Edge浏览器
edge_options.add_argument("headless")  # 无界面模式
edge_options.add_argument("disable-gpu")  # 禁用GPU加速
#因为是遍历查询,所以加入了随机user-agent
edge_options.add_argument("user-agent="+user_agent())
driver = webdriver.Edge(options=edge_options)
driver.get(url)              

4、常用代码

1、查找elements(这返回的是数组,如果确定唯一的,则用find_element)

links = driver.find_elements(By.XPATH,'//div[@class="jbxx-content"]//a')

注:语法跟xpath相似

2、获取WebElement的属性值

cos = link.get_attribute("href")

3、执行click事件

#如果报ElementClickInterceptedException错误的话
driver.execute_script("arguments[0].scrollIntoView();",link)
#执行点击事件
link.click()

4、获取text值

text = driver.find_element(By.ID, "justanotherlink").text

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

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

相关文章

qt 6.7 版本 ,QStackedLayout布局中添两个QWidget,每个QWidget都有一个按钮,点击后分别显示另一个布局

1.代码 在Qt 6.7中,如果你想要将QStackedLayout布局中包含两个QWidget,并且每个QWidget都有一个按钮,点击按钮后显示另一个布局,同时希望将头文件(.h)和源文件(.cpp)分开&#xff0…

Python基础:register buffer

模型保存下来的参数有两种:需要更新的 Parameter ,与是不需要更新的 buffer 。 在模型中,利用backward反向传播,可以通讨requires_grad来得到 buffer 和 parameter 的梯度信息,但是利用 optimizer 进行更新的是 parame…

Apache httpd-vhosts.conf 配置详解(附Demo)

目录 前言1. 基本配置2. http和https3. 重定向和代理配置4. 实战前言 Nginx的相关配置推荐阅读:Nginx将https重定向为http进行访问的配置(附Demo) 1. 基本配置 httpd-vhosts.conf 是 Apache HTTP Server 配置虚拟主机(Virtual Hosts)的文件 虚拟主机允许在一台服务器上…

HarmonyOS NEXT零基础入门到实战-第一部分

构建节页面思路: 1、排版 (分析布局) 2、内容(基础组件) 3、美化(属性方法) 设计资源-svg图标 界面中展示图标 ->可以使用svg图标(任意放大缩小不失真,可以改颜色) 使用方式&a…

重磅活动推荐:2024 CLK 大会启动中,承办单位开放报名

中国 Linux 内核开发者大会(简称“CLK 大会”)是中国 Linux 内核领域最具影响力的峰会之一,由清华大学、英特尔、富士通南大、IBM、阿里云、华为、腾讯等企业支持主办。大会秉承“自由、协作、创新”理念,以推动和普及开源技术为使…

java中Hashcode的作用【详解版】

一 HashCode作用 1.1 HashCode作用 hashCode是object类的一个方法,用于哈希表结构,主要是用来获取哈希值,用于确定对象在哈希表中的位置,如果两个对象的hashcode相同,那么他们可能被放在哈希表同一个位置(这取决于哈…

【每天值得看】文章获得《每天值得看》人工智能板块推荐第三名!为自己点个赞!!!

[2024-07-19]|CSDN每天值得看|人工智能 ① 【机器学习】Grid Search: 一种系统性的超参数优化方法(鑫宝Code:[博客] [成就]) [质量分:97;难度等级:未知;新鲜技术:99] 摘…

第2部分:物联网模式在行动

第2部分:物联网模式在行动 上一部分中详细介绍的模式可以混合和匹配,以实现物联网用例。本部分提供了这些模式的有效性证明,以满足不同领域的独特需求并实施用例,包括消费品和家庭自动化、零售、运输、制造和农业。 本部分包括以…

辅助类BigDecima/BigInteger

** 大数据的运算** 编号1方法解释1add2subtract-3multiply*4divide/

如何发一篇顶会论文? 涉及3D高斯,slam,自动驾驶,三维点云等等

SLAM&3DGS 1)SLAM/3DGS/三维点云/医疗图像/扩散模型/结构光/Transformer/CNN/Mamba/位姿估计 顶会论文指导 2)基于环境信息的定位,重建与场景理解 3)轻量级高保真Gaussian Splatting 4)基于大模型与GS的 6D pose e…

无重复字符的最长子串(leetcode)

题目来源:https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/ 题意 如题,给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度 思路 考点:哈希表滑动窗口 如果我们用两重循…

AutoMQ 生态集成 Redpanda Console

通过 Kafka Web UI 更加便利地管理 Kafka/AutoMQ 集群 随着大数据技术的飞速发展,Kafka 作为一种高吞吐量、低延迟的分布式消息系统,已经成为企业实时数据处理的核心组件。然而,Kafka 集群的管理和监控却并非易事。传统的命令行工具和脚本虽…

C++从入门到起飞之——this指针 全方位剖析!

个人主页:秋风起,再归来~ C从入门到起飞 个人格言:悟已往之不谏,知来者犹可追 克心守己,律己则安! 目录 1、this指针 2、C和C语⾔实现Stack对⽐ C实现Stack代码 C实现Stack代…

华为OD机考题(基础API)

基础API 字典排序 List<String> listnew ArrayList(); //add list member Arrays.sort(list);List<Map<String,Integer>> listnew ArrayList(); //add list member Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {Over…

c# listview控件调整标题显示顺序

右键点击listview,选择编辑列 修改DisplayIndex listview在成员位置点击上下箭头移动后&#xff0c;实际显示不会改变&#xff0c;因为DisplayIndex没有改变

【Git】(基础篇四)—— GitHub使用

GitHub使用 经过上一篇的文章&#xff0c;相信大家已经对git的基本操作熟悉了&#xff0c;但哪些使用git的方法只是在本地仓库进行&#xff0c;本文介绍如何使用git和远程仓库进行连接使用。 Github和Gitee 主要用到的两个远程仓库在线平台是github和gitee GitHub GitHub …

STM32第十九课:FreeRTOS移植和使用

目录 需求一、FreeRtos概要二、移植FreeRtos1.复制源码2.内存空间分配和内核相关接口3.FreeRTOSConfig.h4.在工程中添加.c.h 三、任务块操作1.创建任务2.任务挂起&#xff0c;恢复&#xff0c;删除 四、需求实现代码 需求 1.将FreeRtos&#xff08;嵌入式实时操作系统&#xf…

白骑士的C++教学高级篇 3.2 多线程与并发

系列目录 上一篇&#xff1a;白骑士的C教学高级篇 3.1 文件操作 随着计算机硬件的发展&#xff0c;现代计算机通常配备了多核处理器&#xff0c;为并发编程提供了硬件基础。C11引入了一组强大的多线程库&#xff0c;使得开发多线程应用程序变得更加容易和安全。本篇内容将详细…

若依框架中Spring Cloud版本启动失败问题

RuoYiSystemApplication启动不了 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ruoyi.system.mapper.SysConfigMapper.selectConfigList 该问题是因为在我们拉取若依代码到本地之后&#xff0c;没有对配置作改动&#xff0c;而且若依…

在Python中字典是如何通过哈希表实现的以及哈希冲突是如何解决的

哈希表&#xff08;散列表&#xff09;是一种非常重要的数据结构&#xff0c;它提供了快速的插入、查找和删除操作&#xff0c;平均时间复杂度接近O(1)。哈希表通过哈希函数将键&#xff08;key&#xff09;映射到表中的一个位置来访问记录&#xff0c;以加快查找速度。下面分别…