初级教程
selenium 教程和视频教程s原理与安装 - 白月黑羽
https://www.byhy.net/auto/selenium/01/#chrome 1
Selenium 自动化环境安装_哔哩哔哩_bilibili
Selenium 自动化环境安装是Python + Selenium Web自动化 2024版 - 自动化测试 爬虫的第2集视频,该合集共计35集,视频收藏或关注UP主,及时了解更多相关视频内容。
高级教程
代码解释
导入必要的模块
```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 源码。这些步骤在自动化测试和网页数据抓取中非常有用。