[网络爬虫] 动态网页抓取 — Selenium 介绍 环境配置

news2025/3/12 20:46:06

🌟想系统化学习爬虫技术?看看这个:[数据抓取] Python 网络爬虫 - 学习手册-CSDN博客

0x01:Selenium 工具介绍

Selenium 是一个开源的便携式自动化测试工具。它最初是为网站自动化测试而开发的,类似于我们玩游戏用的按键精灵,可按照预先设定的指令进行自动化操作。但不同的是,Selenium 支持与所有主流的浏览器(如 Chrome、Firefox、Edge、IE 等)配合使用,当然,也包括如 PhantomJS、Headless Chrome 等一些无界面的浏览器。

Selenium 可以直接运行在浏览器中,模拟用户使用浏览器完成一些动作,包括自动加载页面、输入文本、选择下拉列表框中的选项、单机按钮、单机超链接等。

0x02:Selenium & WebDriver 环境配置

在使用 Selenium 抓取动态网页之前,我们需要在计算机上安装 Selenium 和配合它使用的浏览器驱动 WebDriver。为了避免在后续的网络爬虫程序中重复指定 WebDriver 的执行路径,我们还需要为 WebDriver 配置环境变量。

0x0201:环境配置 — Selenium

Selenium 的安装十分简单,直接使用 pip 命令即可,具体的安装命令如下:

pip install selenium==3.141.0

因为笔者的机器中是安装过了的,所以会出现 “Requirement already satisfied” 的字段,读者运行上述命令后应该会出现 “Successfully Installed Selenium” 字段。如果读者安装过慢,可能是 Python 镜像仓库的源没有换导致的,建议手动搜索 “Python 换源”,将仓库源换为国内的。

另外,目前最新的 Selenum 应该已经到 4 版本了,但是 4 版本的 Selenium 语法相较于 3 有很大的改变,笔者后续的笔记是基于 3 版本的(够用了)。所以,如果后续你运行笔者的程序出错了,建议先排查一下自己安装的 Selenium 的版本信息。

0x0202:环境配置 — WebDriver

WebDriver 即浏览器驱动程序,用于实现 Selenium 与浏览器之间的交互。不同的浏览器使用的驱动程序不同,常见的浏览器机器对应的驱动程序如下表所示:

浏览器驱动程序下载路径
Chromium/ChromeChromeDriverGoogelChromeDriver 下载(需要魔法)
FireFoxGeckoDriverGeckoDriver 下载
EdgeMicrosoftWebDriverMicrosoft Edge 下载
IEIEDriverServerIEDriverServer 下载
OperaOperaChromiumDriver
SafariSafariDriver
Selenium+WebDriver 各浏览器驱动下载与使用 - 苏念雨 - 博客园Selenium + Python 之 WebDriver 驱动下载与使用 一、Firefox(火狐)浏览器驱动 下载地址:https://github.com/mozilla/geckodriver/releases/ 下载对应驱动:根据自己的操作系统下载相对应的驱动。 使用方法:把文件存放在 phttps://www.cnblogs.com/sunisnyu/p/18442541

需要注意的是,不同版本的浏览器驱动程序支持的浏览器版本也不同。我们在下载浏览器驱动程序之前,需要先查看当前浏览器的版本号(这也是为啥,明明程序没问题,但是死活无法打开浏览器的情况)。

接下来,笔者以 Chrome 浏览器为例,为大家演示如何安装 Chrome 浏览器的驱动程序。

1. 查看 Chrome 浏览器版本

打开 Chrome 浏览器,然后访问下面的页面,即可看到当前 Chrome 浏览器的内核版本:

chrome://settings/help

2. 选择对应版本的 WebDriver

看到我们当前的浏览器版本 134.0 后,我们来到 Google Chrome 官方页面,查找对应的 Chrome:

https://developer.chrome.google.cn/docs/chromedriver/downloads?hl=zh-cn

点击页面上的 “Chrome 115 及更高版本” 后它会跳转到如下界面,我们选择对应的版本 “134”:

https://googlechromelabs.github.io/chrome-for-testing/

如下,我们选择适合自己平台的对应版本的 Chrome Driver 即可,将链接复制下来直接访问,就可以下载了:

将下载下来的 ChromDriver 解压,可以看到里面包含一个 chromedriver.exe 程序,这个程序就是我们需要的 WebDriver 了,该 WebDriver 专门用于驱动 Chrome 浏览器:

3. 将 WebDriver 添加到环境变量中(可选)

在程序中使用 WebDriver 时,既可以显式地指定 WebDriver 所在的执行目录,也可以将 WebDriver 配置到系统环境变量中。将 WebDriver 配置到系统环境变量中以后,在程序中再次使用 WebDriver 时,就不需要重复指定 WebDriver 的执行路径了。下面笔者以 ChromeDriver 为例,为大家演示如何将 ChromeDriver 配置到环境变量中。

在系统中直接搜索 “环境变量”,点击下面框出来的内容:

然后单机 “环境变量”,在 “系统变量” 中找到 “Path” 变量,将我们解压的 ChromeDriver 的路径黏贴进去:

然后一路点击 “确定” 退出。最后,按下 Win + R 输入 CMD,打开命令行窗口,输入下面的内容,若命令后出现 ChromeDriver 当前的版本,则说明环境配置成功:

chromedriver -version

0x03:Selenium & WebDriver 环境检测

当你按照上述流程配置完 Selenium & WebDriver 环境后,可以新建一个 .py 文件,并输入下面的代码尝试运行一下,如果能运行成功,那么恭喜你,可以开启 Selenium 自动化之旅了:

from selenium import webdriver # 导入 selenium 库
​
# 实例化一个浏览器对象
driver = webdriver.Chrome()
​
# 尝试访问 baidu.com
driver.get('https://www.baidu.com/')
# 让浏览器全屏
driver.maximize_window()
​
### 下面两个是用来关闭浏览器的,你可以依次取消注释然后运行看看
# driver.close()  # 关闭当前页面
# driver.quit()   # 退出浏览器

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

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

相关文章

【RAGFlow】windows本地pycharm运行

原因 由于官方只提供了docker部署,基于开源代码需要实现自己内部得逻辑,所以需要本地pycharm能访问,且docker运行依赖得其余组件,均需要使用开发服务器得配置。 修改过程 安装python 项目依赖于Python 版本:>3.1…

树莓派5首次开机保姆级教程(无显示器通过VNC连接树莓派桌面)

第一次开机详细步骤 步骤一:树莓派系统烧录1 搜索打开烧录软件“Raspberry Pi Imager”2 选择合适的设备、系统、SD卡3 烧录配置选项 步骤二:SSH远程树莓派1 树莓派插电2 网络连接(有线或无线)3 确定树莓派IP地址 步骤三&#xff…

html-表格标签

一、表格标签 1. 表格的主要作用 表格主要用于显示、展示数据,因为它可以让数据显示的非常的规整,可读性非常好。特别是后台展示数据 的时候,能够熟练运用表格就显得很重要。一个清爽简约的表格能够把繁杂的数据表现得很有条理。 总…

大模型安全新范式:DeepSeek一体机内容安全卫士发布

2月以来,DeepSeek一体机几乎成为了政企市场AI消费的最强热点。 通过一体机的方式能够缩短大模型部署周期,深度结合业务场景,降低中小企业对于大模型的使用门槛。据不完全统计,已约有超过60家企业基于DeepSeek推出一体机产品。 但…

数据分析绘制随时间顺序变化图加入线性趋势线——numpy库的polyfit计算一次多项式拟合

import pandas as pd import numpy as np import matplotlib.pyplot as plt# 导入数据 data pd.read_csv(rC:\Users\11712\notebooktrain1.csv)# 假设数据包含 date_time 和 speed 列 data[date_time] pd.to_datetime(data[date_time]) # 确保时间列是 datetime 类型 data.s…

密闭空间可燃气体监测终端:守护城市命脉,智驭燃气安全!

近年来,陕西省高度重视燃气安全,出台了一系列政策文件,旨在全面加强城镇燃气安全监管,防范化解重大安全风险。2023年,陕西省安委会印发《全省城镇燃气安全专项整治工作方案》,明确要求聚焦燃气经营、输送配…

阿里千问大模型(Qwen2.5-VL-7B-Instruct)部署

参考链接 知乎帖子 B站视频 huggingface 镜像网站(不太全,比如 Qwen/Qwen2.5-VL-7B-Instruct就没有) huggingface 5种下载方式汇总 通过huggingface-cli下载模型 不一样的部分是预训练权重的下载和demo 首先安装huggingface_hub pip insta…

【Go学习实战】03-3-文章评论及写文章

【Go学习实战】03-3-文章评论及写文章 文章评论注册valine获取凭证加载评论页面 写文章修改cdn位置完善功能查看页面 发布文章POST发布文章发布文章测试 查询文章详情查询详情测试 修改文章修改文章测试 写文章图片上传前端后端逻辑测试 文章评论 这里我们的博客因为是个轻量级…

从零开始用AI开发游戏(一)

1. 核心玩法设计 核心目标:玩家需在随机生成的3D迷宫中寻找出口,躲避陷阱、收集道具、解开谜题。核心机制: 随机生成迷宫:每次游戏生成不同结构的迷宫(递归分割算法或深度优先搜索)。第一人称视角&#xf…

AI-大模型中的流式输出与非流式输出

1.前言 在大模型API开发中,流式与非流式输出对应着两种不同的数据交互,在代码中stream中通过参数true与false来进行设定。 2.流式输出与非流式输出的原理 2.1.非流式输出-请求一次响应返回完整数据 非流式输出,传统的请求-响应模式&#xf…

【HarmonyOS Next】鸿蒙加固方案调研和分析

【HarmonyOS Next】鸿蒙加固方案调研和分析 一、前言 根据鸿蒙应用的上架流程,本地构建app文件后,上架到AGC平台,平台会进行解析。根据鸿蒙系统的特殊设置,仿照IOS的生态闭环方案。只能从AGC应用市场下载app进行安装。这样的流程…

蓝桥杯javaB组备战第二天 题目 区间次方和 编号3382

这是一个前缀和问题,但是不同于以为前缀和问题 前缀和问题求解思路: 创建一个前缀数组 s[] ,存储输入的元素的a[1]到a[n]的和 及:s[1] s[i-1]a[i] ,i>1 这样比暴力算法的复杂度要低很多可以将 时间复杂度从O(q*n*m)下降到 O(n*mq) …

《Android 平台架构系统启动流程详解》

目录 一、平台架构模块 1.1 Linux 内核 1.2 硬件抽象层 (HAL) 1.3 Android 运行时 1.4 原生 C/C 库 1.5 Java API 框架 1.6 系统应用 二、系统启动流程 2.1 Bootloader阶段 2.2 内核启动 2.3 Init进程(PID 1) 2.4 Zygote与System Serv…

强化学习(赵世钰版)-学习笔记(3.最优策略与贝尔曼最优方程)

这是本章在课程中的位置,属于基础工具中的最后一章,主要讨论了最优状态值(Optimal State Value)与最优策略(Optimal Policy),并介绍了对应的计算方法-贝尔曼最优方程(Bellman Optima…

六十天前端强化训练之第十一天之事件机制超详解析

欢迎来到编程星辰海的博客讲解 目录 一、事件模型演进史 1.1 原始事件模型(DOM Level 0) 1.2 DOM Level 2事件模型 1.3 DOM Level 3事件模型 二、事件流深度剖析 2.1 捕获与冒泡对比实验 2.2 事件终止方法对比 三、事件委托高级应用 3.1 动态元…

调试正常 ≠ 运行正常:Keil5中MicroLIB的“量子态BUG”破解实录

调试正常 ≠ 运行正常:Keil5中MicroLIB的“量子态BUG”破解实录——从勾选一个选项到理解半主机模式,嵌入式开发的认知升级 📌 现象描述:调试与烧录的诡异差异 在线调试时 程序正常运行 - 独立运行时 设备无响应 ! 编译过程 0 Err…

基于SpringBoot实现旅游酒店平台功能八

一、前言介绍: 1.1 项目摘要 随着社会的快速发展和人民生活水平的不断提高,旅游已经成为人们休闲娱乐的重要方式之一。人们越来越注重生活的品质和精神文化的追求,旅游需求呈现出爆发式增长。这种增长不仅体现在旅游人数的增加上&#xff0…

ArcGIS Pro中字段的新建方法与应用

一、引言 在地理信息系统(GIS)的数据管理和分析过程中,字段操作起着至关重要的作用。 无论是进行地图制作、空间分析还是数据统计,字段都是承载属性信息的基本单元。 ArcGIS Pro作为一款功能强大的GIS软件,为用户提…

c#面试题12

1.ApplicationPool介绍一下 c#里没有 2.XML 可扩展标记语言,一般以.xml文件格式的形式存在。可用于存储结构化的数据 3.ASP.NET的用户控件 将原始的控件,用户根据需要进行整合成一个新的控件 4.介绍一下code-Behind 即代码后置技术,就是…

Matlab中快速查找元素索引号

1、背景介绍 在算法设计过程中,有时候需要从一维/二维数组中,快速查找是否某个元素,以及该元素所在的位置。如一维矩阵[1 2 3 4 5 6 6 7 8]所示,元素6所在的位置为6 7。 2、函数测试 matlab中函数find()可以快速查找到指定元素所…