Python Selenium 一小时速通教程 + 实战案例
一、环境配置(10分钟)
-
安装Python
确保已安装Python 3.x(官网下载)。
-
安装Selenium
在终端运行:
bashpip install selenium
-
下载浏览器驱动
- Chrome :访问 ChromeDriver官网,选择与浏览器版本匹配的驱动。
- Firefox :下载 geckodriver。
- Edge :下载 Microsoft WebDriver。
驱动放置位置:
- 直接放在Python安装目录的
Scripts
文件夹,或 - 在代码中指定路径(如
executable_path=r'C:\path\to\chromedriver.exe'
)。
-
验证安装
运行以下代码,若弹出浏览器窗口则成功:
pythonfrom selenium import webdriver driver = webdriver.Chrome() # 或 Firefox() / Edge() driver.get("https://www.baidu.com") driver.quit()
二、核心功能(20分钟)
1. 浏览器操作
python
from selenium import webdriver
# 启动浏览器
driver = webdriver.Chrome()
# 打开网页
driver.get("https://www.csdn.net")
# 后退/前进
driver.back()
driver.forward()
# 刷新页面
driver.refresh()
# 关闭浏览器(关闭所有窗口用 quit())
driver.close()
2. 元素定位(8种方法)
python
from selenium.webdriver.common.by import By
# 通过ID定位(唯一且高效)
element = driver.find_element(By.ID, "toolbar-search-input")
# 通过name定位(可能不唯一)
element = driver.find_element(By.NAME, "wd")
# 通过class定位(适合批量元素)
elements = driver.find_elements(By.CLASS_NAME, "s_ipt")
# 通过标签名定位(如所有输入框)
inputs = driver.find_elements(By.TAG_NAME, "input")
# 通过链接文本定位
link = driver.find_element(By.LINK_TEXT, "新闻")
# 通过部分链接文本定位
link = driver.find_element(By.PARTIAL_LINK_TEXT, "闻")
# XPath定位(灵活但复杂)
element = driver.find_element(By.XPATH, '//*[@id="kw"]')
# CSS选择器定位
element = driver.find_element(By.CSS_SELECTOR, "#kw")
3. 元素操作
python
# 输入文本
element.send_keys("Hello Selenium")
# 点击元素
element.click()
# 清空输入框
element.clear()
# 获取属性(如链接的href)
href = element.get_attribute("href")
# 获取文本内容
text = element.text
三、实战案例(20分钟)
案例1:自动登录CSDN
python
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()
driver.get("https://passport.csdn.net/login")
# 定位用户名和密码框
username = driver.find_element(By.ID, "all")
password = driver.find_element(By.ID, "password-number")
# 输入凭据
username.send_keys("your_username")
password.send_keys("your_password")
# 点击登录按钮
driver.find_element(By.CLASS_NAME, "logging").click()
time.sleep(3)
driver.quit()
案例2:抓取京东商品数据
python
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
def jd_spider(keyword):
driver = webdriver.Chrome()
driver.get("https://www.jd.com")
# 搜索商品
search_box = driver.find_element(By.ID, "key")
search_box.send_keys(keyword)
search_box.send_keys(Keys.ENTER)
time.sleep(2)
# 提取商品信息
goods = driver.find_elements(By.CLASS_NAME, "gl-item")
for good in goods:
name = good.find_element(By.CSS_SELECTOR, ".p-name em").text
price = good.find_element(By.CSS_SELECTOR, ".p-price i").text
link = good.find_element(By.TAG_NAME, "a").get_attribute("href")
print(f"名称: {name}, 价格: {price}, 链接: {link}")
driver.quit()
jd_spider("Python书籍")
案例3:无头浏览器模式(后台运行)
python
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless") # 无头模式
chrome_options.add_argument("--disable-gpu")
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://www.baidu.com")
print(driver.title)
driver.quit()
四、进阶技巧(10分钟)
-
显式等待(避免元素未加载导致的错误)
pythonfrom selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "submit_button")) )
-
处理弹窗
pythonalert = driver.switch_to.alert alert.accept() # 确认弹窗 # alert.dismiss() # 取消弹窗
-
切换iframe
pythoniframe = driver.find_element(By.TAG_NAME, "iframe") driver.switch_to.frame(iframe) # 操作iframe内部元素... driver.switch_to.default_content() # 切回主页面
-
异常处理
pythonfrom selenium.common.exceptions import NoSuchElementException try: element = driver.find_element(By.ID, "non_existent_id") except NoSuchElementException: print("元素未找到!")
总结
- 1小时学习路径:环境配置 → 浏览器操作 → 元素定位 → 实战案例 → 进阶技巧。
- 关键注意事项 :
- 驱动版本必须与浏览器匹配。
- 优先使用ID或name定位,复杂场景用XPath/CSS。
- 合理使用等待机制避免操作失败。
通过这4个模块,你可以快速掌握Selenium的核心用法,并直接运行提供的案例代码!