2、Selenium 环境搭建:安装 Selenium、WebDriver 配置、浏览器驱动下载与路径设置、第一个自动化脚本。
好,咱们正式开始动手了。这一章,我带你把 Selenium 的环境彻底搭起来。很多新手在这一步就卡住了,尤其是浏览器驱动那块,各种报错。别急,跟着我的节奏来,保证你半小时内跑起来第一个脚本。
2.1 安装 Selenium 库
这一步其实最简单。打开你的终端,敲一行命令就行。我个人习惯用 pip,干净利落。
pip install selenium
如果你用的是 Python 3,有时候需要指定 pip3:
pip3 install selenium
嗯,这里要注意。如果你电脑上同时有 Python 2 和 Python 3,千万别搞混了。我见过有人用 pip 装到了 Python 2 的环境里,然后脚本用 Python 3 跑,死活找不到模块。你想想看,这种低级错误排查起来多浪费时间。
装完之后,验证一下:
python -c "import selenium; print(selenium.__version__)"
如果输出版本号,比如 4.15.0,那就说明装好了。
2.2 浏览器驱动下载与路径设置
这是整个环境搭建里最坑的一步。说白了,Selenium 本身只是个遥控器,它需要浏览器驱动来真正操控浏览器。驱动就像是一个翻译官,把 Selenium 的指令翻译给浏览器听。
2.2.1 下载对应版本的驱动
不同的浏览器,驱动不一样。主流的有三种:
| 浏览器 | 驱动名称 | 下载地址 |
|---|---|---|
| Chrome | chromedriver | https://chromedriver.chromium.org/ |
| Firefox | geckodriver | https://github.com/mozilla/geckodriver/releases |
| Edge | edgedriver | https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ |
关键点来了:驱动版本必须和浏览器版本匹配。 我曾经因为 Chrome 自动更新了,但驱动没换,结果脚本全部罢工。排查了半小时,最后发现是版本号差了一个小版本。
2.2.2 驱动放置的两种方式
驱动下载下来后,怎么用?有两种主流做法。
方式一:放到系统 PATH 里(推荐)
把 chromedriver 放到 Python 的 Scripts 目录下,或者放到 /usr/local/bin(Mac/Linux)。这样 Selenium 会自动找到它。
方式二:指定路径(更灵活)
在代码里直接写死路径。我个人习惯用这种方式,因为不同项目可能用不同版本的驱动。
from selenium import webdriver
# 指定驱动路径
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
2.3 第一个自动化脚本
环境搭好了,咱们来写第一个脚本。目标很简单:打开百度首页,然后打印出页面标题。
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import time
# 创建 Service 对象,指定驱动路径
service = Service('/path/to/chromedriver')
# 初始化浏览器
driver = webdriver.Chrome(service=service)
# 打开百度
driver.get('https://www.baidu.com')
# 等两秒,让页面加载完
time.sleep(2)
# 获取页面标题
title = driver.title
print(f'页面标题是:{title}')
# 关闭浏览器
driver.quit()
跑一下试试。如果看到控制台输出了「百度一下,你就知道」,恭喜你,环境搭建成功了!
你想想看,就这么几行代码,你已经能操控浏览器了。是不是挺有成就感的?
2.4 常见问题与解决方案
第一次跑脚本,大概率会遇到问题。我把最常见的几个列出来:
- 报错:'chromedriver' executable needs to be in PATH —— 驱动没找到。检查路径对不对,或者驱动有没有放到 PATH 里。
- 报错:session not created —— 驱动版本和浏览器版本不匹配。去下载对应版本的驱动。
- 报错:Connection refused —— 端口被占用。重启电脑一般能解决。
- 浏览器闪一下就消失 —— 代码执行太快,没来得及看。加个
time.sleep()或者input()暂停一下。
2.5 进阶:使用 WebDriver Manager 自动管理驱动
手动下载驱动太麻烦了,对吧?尤其是 Chrome 一更新,驱动就得跟着换。有没有自动化的办法?有。
用 webdriver-manager 这个库,它能自动检测浏览器版本,下载对应的驱动。
pip install webdriver-manager
然后代码变成这样:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
# 自动下载并管理驱动
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
driver.get('https://www.baidu.com')
print(driver.title)
driver.quit()
你看,省心多了吧?我在团队里推广这个方案后,新人再也没因为驱动问题来找过我。
好了,环境搭建就到这里。下一章,咱们开始真正玩转元素定位——这才是爬虫自动化的核心技能。