当前位置: 首页 > news >正文

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

这段代码是使用 Selenium 进行网页自动化操作的一个示例,主要目的是在加载网页时执行一些自定义的 JavaScript 代码,并等待页面上某个元素的出现。以下是代码的详细解释:

### 代码解释

#### 导入必要的模块
```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.lryc.cn/news/517576.html

相关文章:

  • HashMap和HashTable的区别
  • 使用redis来进行调优有哪些方案?
  • macOS 中,默认的 Clang 编译器和 Homebrew 安装的 GCC 都不包含 bits/stdc++.h 文件
  • 2012mfc,自绘列表控件
  • vue3运行时执行过程步骤
  • 常用的AT命令,用于查看不同类型的网络信息
  • Vue3组件通讯——自定义事件(子->父)
  • GLSL 着色器语言
  • 如何创建一个 Vue.js 工程
  • Mysql 性能优化:覆盖索引
  • vulnhub靶场【DC系列】之7
  • iOS - 消息机制
  • Wireshark 学习笔记1
  • Oracle OCP考试常见问题之线上考试流程
  • 微信小程序之历史上的今天
  • 记一次k8s下容器启动失败,容器无日志问题排查
  • 【HarmonyOS】纯血鸿蒙真实项目开发---经验总结贴
  • kettle做增量同步,出现报错:Unrecognized VM option ‘MaxPermSize-256m‘
  • 网络安全、Web安全、渗透测试之笔经面经总结(三)
  • 计算机的错误计算(二百零五)
  • Vue3(一)
  • 【项目】修改远程仓库地址、报错jdk
  • 实训云上搭建集群
  • 豆包ai 生成动态tree 增、删、改以及上移下移 html+jquery
  • 【网络协议】IPv4 地址分配 - 第二部分
  • 攻防世界 bug
  • Flink如何设置合理的并行度
  • 小兔鲜儿:生鲜区域,最新专题
  • TypeScript语言的网络编程
  • 复合机器人助力手机壳cnc加工向自动化升级