Python Selenium 一小时速通教程

Python Selenium 一小时速通教程 + 实战案例

一、环境配置(10分钟)
  1. 安装Python

    确保已安装Python 3.x(官网下载)。

  2. 安装Selenium

    在终端运行:

    bash 复制代码
    pip install selenium
  3. 下载浏览器驱动

    驱动放置位置

    • 直接放在Python安装目录的 Scripts 文件夹,或
    • 在代码中指定路径(如 executable_path=r'C:\path\to\chromedriver.exe')。
  4. 验证安装

    运行以下代码,若弹出浏览器窗口则成功:

    python 复制代码
    from 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分钟)
  1. 显式等待(避免元素未加载导致的错误)

    python 复制代码
    from 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"))
    )
  2. 处理弹窗

    python 复制代码
    alert = driver.switch_to.alert
    alert.accept()  # 确认弹窗
    # alert.dismiss()  # 取消弹窗
  3. 切换iframe

    python 复制代码
    iframe = driver.find_element(By.TAG_NAME, "iframe")
    driver.switch_to.frame(iframe)
    # 操作iframe内部元素...
    driver.switch_to.default_content()  # 切回主页面
  4. 异常处理

    python 复制代码
    from 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的核心用法,并直接运行提供的案例代码!

相关推荐
滴滴滴嘟嘟嘟.几秒前
Qt信号与槽机制
开发语言·qt
快起来搬砖了4 分钟前
实现一个优雅的城市选择器组件 - Uniapp实战
开发语言·javascript·uni-app
wu~97010 分钟前
开发思路篇:转账接口设计
java·开发语言
蒋星熠10 分钟前
WebSocket网络编程深度实践:从协议原理到生产级应用
网络·数据库·redis·python·websocket·网络协议·微服务
带娃的IT创业者13 分钟前
实战:用 Python 搭建 MCP 服务 —— 模型上下文协议(Model Context Protocol)应用指南
开发语言·python·mcp
minji...16 分钟前
C++ STL之list的使用
开发语言·c++
万粉变现经纪人17 分钟前
如何解决pip安装报错ModuleNotFoundError: No module named ‘python-dateutil’问题
开发语言·ide·python·pycharm·pandas·pip·httpx
Sammyyyyy28 分钟前
macOS是开发的终极进化版吗?
开发语言·macos·开发工具
跟橙姐学代码31 分钟前
Python 类的正确打开方式:从新手到进阶的第一步
前端·python·ipython
c8i32 分钟前
关于python中的变量中使用的下划线_总结
python