python(爬虫selenium)

Selenium 是一款用于模拟浏览器行为的自动化测试工具,也是爬虫领域中处理动态渲染页面(如 JS 加载、Ajax 请求、登录验证等)的核心工具。

一、导入库

python 复制代码
from selenium import webdriver
 from selenium.webdriver.edge.options import Options
 from selenium.webdriver.common.by import By
import time
 #
 edge_options =Options()
 edge_options.binary_location=r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
# ##edge浏览器的地址
 driver = webdriver.Edge(options=edge_options)

1.导入相关库的函数

from selenium import webdriver

from selenium.webdriver.edge.options import Options

from selenium.webdriver.common.by import By

2.导入edge浏览器的内核

edge_options.binary_location=r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"

二、核心操作浏览器与页面控制

1.基础操作

|---------|-----------------------------------------|-------------------------|
| 打开页面 | driver.get("https://www.example.com") | 访问目标 URL |
| 刷新页面 | driver.refresh() | 刷新当前页面 |
| 前进 / 后退 | driver.forward() / driver.back() | 模拟浏览器前进 / 后退 |
| 窗口大小 | driver.set_window_size(1920, 1080) | 设置窗口尺寸 |
| 全屏 | driver.maximize_window() | 窗口最大化 |
| 关闭窗口 | driver.close() | 关闭当前标签页 |
| 退出浏览器 | driver.quit() | 关闭所有标签页并退出驱动(必写,否则进程残留) |

2.页面元素定位

定位元素是 Selenium 操作的基础,优先使用唯一标识(id/name),其次用 XPath/CSS 选择器,避免用索引(易变)。

|-------------------|----------------------------------------------|--------------------------------------------------------|-----------------|
| ID | find_element(By.ID, "id值") | driver.find_element(By.ID, "username") | 元素有唯一 ID |
| Name | find_element(By.NAME, "name值") | driver.find_element(By.NAME, "password") | 元素有 name 属性 |
| Class Name | find_element(By.CLASS_NAME, "类名") | driver.find_element(By.CLASS_NAME, "btn-submit") | 类名唯一 |
| Tag Name | find_element(By.TAG_NAME, "标签名") | driver.find_element(By.TAG_NAME, "input") | 标签唯一(如单个 input) |
| Link Text | find_element(By.LINK_TEXT, "链接文本") | driver.find_element(By.LINK_TEXT, "登录") | 精准匹配超链接文本 |
| Partial Link Text | find_element(By.PARTIAL_LINK_TEXT, "部分文本") | driver.find_element(By.PARTIAL_LINK_TEXT, "登") | 模糊匹配超链接 |
| XPath | find_element(By.XPATH, "XPath表达式") | driver.find_element(By.XPATH, '//*[@id="username"]') | 复杂定位(万能) |
| CSS Selector | find_element(By.CSS_SELECTOR, "CSS表达式") | driver.find_element(By.CSS_SELECTOR, "#username") | 高效定位(推荐) |

3.元素交互

python 复制代码
# 1. 点击元素(按钮/链接/复选框)
btn_elem = driver.find_element(By.CLASS_NAME, "submit-btn")
btn_elem.click()

# 2. 获取元素属性/文本
elem = driver.find_element(By.XPATH, '//div[@class="content"]')
print(elem.text)  # 获取元素可见文本
print(elem.get_attribute("href"))  # 获取href属性
print(elem.get_attribute("innerHTML"))  # 获取内部HTML

# 3. 输入文本(先清空再输入)
input_elem = driver.find_element(By.ID, "username")
input_elem.clear()  # 清空输入框
input_elem.send_keys("test123")  # 输入内容

执行Javascript 代码,可以将页面滚动到底部。

driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')

4.等待渲染

可以通过time函数用sleep方法等待

相关推荐
月光船幽幽几秒前
检测用户意图复杂性的关键方法
人工智能·python
威联通网络存储3 小时前
TS-h3087XU-RP 汽车零部件质检追溯部署
python·汽车
你驴我3 小时前
WhatsApp 多账号场景下的会话归档与历史消息检索优化实践
后端·python
IT毕设实战小研3 小时前
基于安卓的空气质量查询系统
android·大数据·vue.js·爬虫·python·django·课程设计
harmful_sheep4 小时前
java group by常见用法
java·开发语言·python
whcyhhh4 小时前
头歌实践教学平台:数据科学与大数据技术导论(十六)
大数据·开发语言·python
宸津-代码粉碎机4 小时前
AI工程化高阶实战|从Demo到生产落地核心架构、全套源码与避坑指南
java·大数据·开发语言·人工智能·python·架构
郝学胜-神的一滴5 小时前
Effective Python 条款4:字符串格式化大乱斗
开发语言·网络·python·程序人生·软件工程
ynchyong6 小时前
Python 字符组合生成器:product 与 permutations 的实战对比
python·工具·字符串生产
benchmark_cc6 小时前
1000只ETF的5分钟K线如何批量获取?QuantDash分页策略与高性能Python实践
开发语言·人工智能·爬虫·python·算法·quantdash·量化数据源