Selenium 进行网页自动化操作的一个示例,绕过一些网站的自动化检测。python编程

news/2025/1/15 1:30:06/

初级教程

selenium 教程和视频教程s原理与安装 - 白月黑羽
https://www.byhy.net/auto/selenium/01/#chrome%201

Selenium 自动化环境安装_哔哩哔哩_bilibili
Selenium 自动化环境安装是Python + Selenium Web自动化 2024版 - 自动化测试 爬虫的第2集视频,该合集共计35集,视频收藏或关注UP主,及时了解更多相关视频内容。
https://www.bilibili.com/video/BV1Z4411o7TA?spm_id_from=333.788.player.switch&vd_source=efbefa737a60b2966747a4383eed8b09&p=2

高级教程

selenium使用本地浏览器用户数据保持登录_哔哩哔哩_bilibiliselenium使用本地浏览器用户数据保持登录, 视频播放量 4702、弹幕量 0、点赞数 37、投硬币枚数 16、收藏人数 114、转发人数 4, 视频作者 Data工程师, 作者简介 code and data is cheap, show me your ppt! ,相关视频:selenium和playwright工具类保持登录,不要再学selenium了,DrissionPage更香,我写了一个开源的指纹浏览器,【2024】各种软件付费VIP歌曲免费听、下载,实现永久白嫖,不再付费!!!,鸿蒙系统800万行的代码,在当今世界上到底处于什么水平?,【2024版大麦网抢票脚本】Python全自动门票秒杀脚本,拒绝黄牛,从我做起!!!,表白源码来咯,全网首发3D爱心粒子代码,手机也能看,确定不发给对象看看?【附源码】,我教你爬虫不是爬我的网站视频去卖钱卖的比我还便宜啊。,自动登录,IP代理池都不教就敢来爬我的网站!icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1Ww411N7we?spm_id_from=333.788.videopod.sections&vd_source=efbefa737a60b2966747a4383eed8b09

 代码解释

#### 导入必要的模块
```python
from selenium.webdriver import Chrome, ChromeOptions
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
```
- `Chrome` 和 `ChromeOptions`:用于创建 Chrome 浏览器实例和配置选项。
- `Service`:用于指定 ChromeDriver 的路径。
- `By`:用于定位页面元素。
- `expected_conditions` 和 `WebDriverWait`:用于显式等待页面元素的出现。

#### 配置 Chrome 选项
```python
options = ChromeOptions()
# ...(这里省略了之前提到的选项配置代码)...
```
- 这里省略了之前提到的配置代码,包括设置性能日志等。

#### 创建 WebDriver 实例
```python
service = Service(executable_path=executable_path)
driver = Chrome(service=service, options=options)
```
- `Service(executable_path=executable_path)`:指定 ChromeDriver 的路径。
- `Chrome(service=service, options=options)`:创建一个 Chrome 浏览器实例,并应用之前配置的选项。

#### 执行自定义 JavaScript 代码
```python
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",
                       {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})
```
- `execute_cdp_cmd`:执行 Chrome DevTools Protocol (CDP) 命令。
- `"Page.addScriptToEvaluateOnNewDocument"`:在新文档加载时执行的脚本。
- `{"source": ...}`:要执行的 JavaScript 代码。
- 这段 JavaScript 代码的作用是删除 `navigator.webdriver` 属性,这通常用于绕过一些网站的自动化检测。

#### 打开网页
```python
driver.get(page_url)
```
- `driver.get(page_url)`:打开指定的网页 URL。

#### 显式等待页面元素出现
```python
wait = WebDriverWait(driver, 15, 0.5)
try:
    wait.until(expected_conditions.presence_of_element_located((By.CLASS_NAME, "item ")))
except Exception as e:
    print("WebDriverWait.until timeout error: {}".format(e))
```
- `WebDriverWait(driver, 15, 0.5)`:创建一个显式等待对象,最多等待 15 秒,每 0.5 秒检查一次。
- `wait.until(expected_conditions.presence_of_element_located((By.CLASS_NAME, "item ")))`:等待页面上出现类名为 `item` 的元素。
- 如果等待超时,会捕获异常并打印错误信息。

#### 获取页面 HTML 源码
```python
html = driver.execute_script("return document.documentElement.outerHTML")
```
- `driver.execute_script("return document.documentElement.outerHTML")`:使用 JavaScript 获取整个页面的 HTML 源码,并将其存储在变量 `html` 中。

### 总结
这段代码展示了如何使用 Selenium 进行网页自动化操作,包括配置浏览器选项、执行自定义 JavaScript 代码、显式等待页面元素的出现以及获取页面的 HTML 源码。这些步骤在自动化测试和网页数据抓取中非常有用。


http://www.ppmy.cn/news/1563185.html

相关文章

【Python】Python之Selenium基础教程+实战demo:提升你的测试+测试数据构造的效率!

这里写目录标题 什么是Selenium?Selenium基础用法详解环境搭建编写第一个Selenium脚本解析脚本脚本执行结果常用的元素定位方法常用的WebDriver方法等待机制 Selenium高级技巧详解页面元素操作处理弹窗和警告框截图和日志记录多窗口和多标签页操作 一个实战的小demo…

【YOLOv5】源码(train.py)

train.py是YOLOv5中用于模型训练的脚本文件,其主要功能是读取配置文件、设置训练参数、构建模型结构、加载数据、训练/验证模型、保存模型权重文件、输出日志等 参考笔记: 【YOLOv3】源码(train.py)_yolo原始代码-CSDN博客 【y…

docker 自建rustdesk服务器测试

参考https://blog.csdn.net/tootsy_you/article/details/130010564 注意: docker-compose.yml version: 3networks:rustdesk-net:external: falseservices:hbbs:container_name: hbbsports:- 21115:21115- 21116:21116- 21116:21116/udp- 21118:21118image: rust…

【Linux】统信UOS服务器安装MySQL8.0(RPM)

目录 一、下载安装包 二、安装MySQL 2.1hive适配 2.2ranger适配 3.2DolphinScheduler适配 一、下载安装包 官网下载安装包:MySQL :: MySQL Downloads 选择社区版本下载 点击MySQL Community Server 选择对应系统的MySQL版本号 统信1060a 操作系统对应 redhat8…

HTTP 范围Range请求

引言 在现代Web应用中,HTTP范围请求是一种重要的技术,允许客户端请求资源的部分内容,而不是整个资源。这对于大型文件的传输尤其有用,如视频流、断点续传下载等。本文将深入探讨HTTP范围请求的工作原理、实现方法和应用场景。 H…

图解Git——分支的新建与合并《Pro Git》

⭐分支的新建与合并 先引入一个实际开发的工作流: 开发某个网站。为实现某个新的需求,创建一个分支。在这个分支上开展工作。 正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。你将按照如下方式来处理: 切换到你…

iOS手势shouldBeRequiredToFailByGestureRecognizer 机制

我们在iOS的手势代理方法中看到这样三个方法 (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecogni…

《Java核心技术II》网络使用telnet

使用telnet telnet是一种用于网络编程的非常强大的调试工具,可以在命令shell中输入telnet来启动它。 注释:在Windows中需要激活它,控制面板->程序->打开/关闭Windows特性->Telnet客户端。 连接当日时间服务 连接到当日时间服务&…