Python Selenium爬虫功能使用介绍

本文介绍python selenium 爬虫的功能以及使用

1. 基础核心功能

浏览器控制

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager# 自动管理浏览器驱动
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))# 控制浏览器窗口
driver.maximize_window()  # 最大化窗口
driver.minimize_window()  # 最小化窗口
driver.set_window_size(1200, 800)  # 自定义尺寸
页面导航

driver.get("https://www.baidu.com")  # 打开网页
driver.refresh()  # 刷新页面
driver.back()     # 返回上一页
driver.forward()  # 前进下一页
元素定位(8种方式)

from selenium.webdriver.common.by import By# 常用定位方式
driver.find_element(By.ID, "kw")           # ID定位
driver.find_element(By.NAME, "wd")         # Name属性
driver.find_element(By.CLASS_NAME, "s_ipt") # Class名
driver.find_element(By.TAG_NAME, "input")   # 标签名
driver.find_element(By.LINK_TEXT, "新闻")   # 链接文本
driver.find_element(By.XPATH, "//input[@id='kw']")  # XPath
driver.find_element(By.CSS_SELECTOR, "#kw") # CSS选择器

2. 高级交互功能

表单操作

element = driver.find_element(By.ID, "kw")
element.send_keys("Python")       # 输入文本
element.clear()                   # 清空输入框
element.send_keys(Keys.RETURN)    # 模拟回车键
鼠标 & 键盘动作

from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys# 鼠标悬停/双击/右击
actions = ActionChains(driver)
actions.move_to_element(element).perform()  # 悬停
actions.double_click(element).perform()     # 双击
actions.context_click(element).perform()    # 右击# 键盘组合键
element.send_keys(Keys.CONTROL + 'a')  # Ctrl+A全选
下拉框处理

from selenium.webdriver.support.select import Selectselect = Select(driver.find_element(By.TAG_NAME, "select"))
select.select_by_index(1)      # 按索引选择
select.select_by_value("opt1") # 按value值
select.select_by_visible_text("选项文本")  # 按可见文本

3. 等待机制(避免元素未加载)

显式等待(推荐)

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 等待最多10秒,直到元素可见
element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "kw"))
)
隐式等待(全局设置)

driver.implicitly_wait(5)  # 每次查找元素最多等5秒

4. 高级特性

执行JavaScript

# 滚动页面/修改属性/复杂操作
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
driver.execute_script("arguments[0].style.border='3px solid red';", element)
Cookie管理

driver.get_cookie("session_id")  # 获取指定cookie
driver.add_cookie({"name": "test", "value": "123"})  # 添加cookie
driver.delete_all_cookies()      # 清除所有cookie
截图与日志

driver.save_screenshot("error.png")  # 页面截图# 获取控制台日志
logs = driver.get_log("browser")  # Chrome需配置选项

5. 实际应用场景

自动化测试

# 登录测试示例
def test_login():driver.find_element(By.ID, "username").send_keys("test")driver.find_element(By.ID, "password").send_keys("123456")driver.find_element(By.ID, "submit").click()assert "欢迎页" in driver.title
数据爬取

# 爬取动态渲染的新闻标题
titles = driver.find_elements(By.CSS_SELECTOR, ".news-title")
for title in titles:print(title.text)
文件上传

driver.find_element(By.ID, "file-upload").send_keys("/path/to/file.txt")

6. 特殊场景处理

iframe切换

driver.switch_to.frame("iframe_id")  # 进入iframe
driver.switch_to.default_content()   # 返回主文档
多窗口/标签页

driver.switch_to.window(driver.window_handles[1])  # 切换到第二个标签页
无头模式(Headless)

options = webdriver.ChromeOptions()
options.add_argument("--headless")  # 无界面运行
driver = webdriver.Chrome(options=options)

总结表格

功能类别主要方法/类典型应用场景
浏览器控制webdriver.Chrome()启动/关闭浏览器
元素定位By类 + find_element()表单填写/按钮点击
等待机制WebDriverWait + EC处理动态加载内容
高级交互ActionChains/Select鼠标操作/下拉框选择
JavaScript执行execute_script()页面滚动/修改DOM属性
多窗口处理switch_to.window()处理弹出窗口/多标签页

通过组合这些功能,可以完成从简单自动化到复杂爬虫/测试的全流程操作。建议从基础定位和交互开始练习,逐步掌握高级特性。

下载 ChromeDriver 的简单方法

自动下载(推荐)

使用 webdriver-manager 库可以自动下载匹配的 ChromeDriver:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager# 自动下载并安装 ChromeDriver
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://www.google.com")

安装 webdriver-manager

pip install webdriver-manager

自动下载关键特点

  1. 自动版本管理

    • 会自动检测你安装的 Chrome 浏览器版本

    • 下载匹配的 ChromeDriver 版本

  2. 目录结构

    .wdm/
    └── drivers/└── chromedriver/└── [操作系统类型]/└── [版本号]/└── chromedriver[.exe]
  3. 无需手动配置

    • 每次运行时会检查是否已有匹配版本

    • 如果没有或版本不匹配,会自动下载新版

查看实际路径的方法

如果你想查看具体安装在哪里,可以临时修改代码:

from webdriver_manager.chrome import ChromeDriverManager

path = ChromeDriverManager().install()
print(f"ChromeDriver 安装在: {path}")

这会在控制台输出类似:

%runfile C:/python/installChromDriver.py --wdir
ChromeDriver 安装在: C:\Users\leon\.wdm\drivers\chromedriver\win64\136.0.7103.49\chromedriver-win32/chromedriver.exe

 

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

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

相关文章

Cloudera CDP 7.1.3 主机异常关机导致元数据丢失,node不能与CM通信

问题描述 plaintext ERROR Could not load post-deployment data from /var/run/cloudera-scm-agent/process/ccdeploy_hadoop-conf_etchadoopconf.cloudera.yarn_-8903374259073700469 IOError: [Errno 2] No such file or directory: /var/run/cloudera-scm-agent/proce…

Nginx安全防护与HTTPS部署

目录 Nginx 隐藏版本号 限制危险请求方法 请求限制(CC攻击防御) 压力测试 防盗链 防止防盗链 动态黑名单 自动添加黑名单 HTTPS配置 HTTPS 概念 安全通信的四大原则 HTTPS的几种加密方式 nginx https的作用 Nginx 隐藏版本号 !!&a…

C++类对象的隐式类型转换和编译器返回值优化

文章目录 前言1. 隐式类型转换1.1 单参数的隐式类型转换1.2 多参数的隐式类型转换1.3 explicit关键字 2. 编译器的优化2.1 普通构造优化2.2 函数传参优化2.3 函数返回优化 前言 在类与对象的学习过程中,一定会对隐式类型转换这个词不陌生。对于内置类型而言&#x…

领麦微红外温度传感器,摇奶器测温应用

在育儿领域,精准控制奶液温度是守护宝宝健康的重要环节。领麦微作为MEMS传感器领域的创新先锋,通过其红外测温传感器的非接触式测量、高精度测温、实时反馈以及智能温控节能等核心优势,为摇奶器注入了全新的智能化解决方案。这一技术不仅提升…

第十一届蓝桥杯 2020 C/C++组 蛇形填数

目录 题目: 题目描述: 题目链接: 思路: 思路详解: 代码: 代码详解: 题目: 题目描述: 题目链接: 蛇形填数 - 蓝桥云课 思路: 思路详解: 看图找规律…

如何检查 Watchtower 是否正常工作及更新未生效的排查方法【日常排错】

文章目录 前言一、验证 Watchtower 是否正在运行1. 检查 Watchtower 容器状态2. 查看 Watchtower 日志 二、检查5分钟间隔设置是否正确1. 确认启动命令2. 验证环境变量 三、排查更新未生效的原因1. 检查是否有镜像更新2. 检查容器标签3. 检查监控范围 四、测试 Watchtower 功能…

宝塔面板,删除项目后还能通过域名进行访问

场景:在阿里云宝塔面板中,删除了之前建立的html项目,通过之前绑定的域名还是可以访问,又把项目的目录文件删除,发现还是不行 又清理了浏览器缓存,但还是有这个问题通过该域名重新创建一个html项目&#xff…

多层PCB SMT贴装全流程指南:从物料准备到回流焊工艺控制

在电子制造领域,多层PCB板元器件贴片是一项重要的技术操作。本文将详细介绍多层PCB板元器件贴片的操作流程和注意事项,帮助您更好地理解和掌握这项技术。 一、准备阶段 在进行多层PCB板元器件贴片操作前,需要做好以下准备工作: 1.…

PAT(最近)

1022 D进制的AB - PAT (Basic Level) Practice (中文) 加减位置调换 本来以为就是简单的 十进制转换为一个长的字符串 没想到在那个拼接字符串的时候 只需要简单的 加减位置调换就可以 避免使用麻烦的翻转函数 import java.util.Scanner; public clas…

【Harbor v2.13.0 详细安装步骤 安装证书启用 HTTPS】

Harbor v2.13.0 详细安装步骤(启用 HTTPS) 1. 环境准备 系统要求:至少 4GB 内存,100GB 磁盘空间。 已安装组件: Docker(版本 ≥ 20.10)Docker Compose(版本 ≥ v2.0) 域…

以pytest_addoption 为例,讲解pytest框架中钩子函数的应用

钩子函数(Hook Function)的概念 钩子函数(Hook Function)是软件框架中预定义的回调接口,允许开发者在程序执行的特定阶段插入自定义逻辑,以扩展或修改框架的默认行为。在 pytest 中,钩子函数覆…

合并两个有序链表 - 简单

************* C topic: 21. 合并两个有序链表 - 力扣(LeetCode) ************* Give the topic an inspection. Hi, guys, how is your holiday break? I went to 黄山 in the past few days. The mount Huang is really beautiful. 天都峰 is real…

13.Spring boot中使用Actuator 监控

13.Spring boot中使用Actuator 监控 Spring Boot Actuator 是 Spring Boot 提供的一个强大的监控和管理工具,它通过暴露各种端点(Endpoints)来提供应用程序的运行时信息。这些端点可以帮助开发者和管理员监控应用程序的健康状况、性能指标、…

Python+Scrapy跨境电商爬虫实战:从亚马逊/沃尔玛数据采集到反爬攻克(附Pangolin API高效方案)

从零实战到反爬攻克,揭秘跨境数据抓取全流程与Pangolin Scrape API终极方案 在当今数据驱动的跨境电商时代,谁掌握了优质的市场数据,谁就掌握了成功的关键。随着全球电商市场规模持续扩大(据Statista最新报告显示,2025…

0基础学习鸿蒙开发-HarmonyOS4

一、初识 1. 开发工具 官网 开发-HarmonyOS NEXT鸿蒙应用开发平台-华为开发者联盟 2. ArkTS 二、TypeScript 基本语法 1.变量声明 2. 条件控制 注意 在TypeScrips中 空字符串数字0、null、undefined 都坡认为是false 其它值则为true if (num) {// num 非空执行 } 3. 循环迭…

深度学习中常用的符号表达式

在论文写作过程中,常常涉及到一些关键的符号的表达,为了更加规范常用的一些符号表达,现将其总结如下(该文件会持续性更新): 数字 x x x : 标量 x \mathbf{x} x : 向量 X \mathbf{X} X : 矩阵 X \mathsf{X}…

react naive 网络框架源码解析

本文取 react native 两个区别很大的版本做分析(0.76.5、0.53.3) 一、0.76.5 版fetch 全流程排查 1、JS 端的实现 随手写一个fetch,点开。 我们这里常用的还是手机端,因此选择 react-native,react-native-windows …

OpenCV 图形API(81)图像与通道拼接函数-----透视变换函数warpPerspective()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 对图像应用透视变换。 函数 warpPerspective 使用指定的矩阵对源图像进行变换: dst ( x , y ) src ( M 11 x M 12 y M 13 M 31 x…

深度学习在油气地震资料反卷积中的应用

深度学习在油气地震资料反卷积中的应用 基本原理 在油气地震勘探中,反卷积(Deconvolution)是一种重要的信号处理技术,用于提高地震资料的分辨率。传统方法(如维纳滤波、预测反卷积等)存在对噪声敏感、假设条件严格等局限。深度学习方法通过数据驱动的方…

Java开发者面试实录:微服务架构与Spring Cloud的应用

面试场景 面试官: 请介绍一下你的基本情况。 程序员: 大家好,我叫张小明,今年27岁,硕士学历,拥有5年的Java后端开发经验。主要负责基于Spring Boot开发企业级应用,以及微服务架构的设计和实现。 面试官: 好的&#…