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

相关推荐
FYKJ_20102 分钟前
springboot游泳馆管理系统79222-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·mysql·django·课程设计
艾莉丝努力练剑8 分钟前
【AI大模型接入SDK】C++ ChatSDK使用手册
开发语言·网络·c++·人工智能·学习·大模型
“AI国潮设计-小江”9 小时前
《Python+SDXL实战:用ControlNet精准控制“英歌舞翻糖吐司”构图,附批量生成脚本》
开发语言·人工智能·python·prompt·aigc
程序喵大人9 小时前
【C++入门】编译链接模型 - 01 一个 C++ 程序是怎样变成可执行文件的
开发语言·c++·编译链接模型
wenwen_chao9 小时前
Python学习与开发资源合集:实用技巧与工具推荐
python
for_ever_love__10 小时前
函数——参数、lambda、*args与作用域
python·函数·大模型开发·编程基础
东莞市云毅网络有限公司10 小时前
企业资料时效性判定:Last-Modified、正文日期与版本字段三路交叉
python·sqlite·自动化运维·geo·数据监测
Query*10 小时前
深入浅出LangGraph【一】_基础篇
python·ai·langchain
sunshine22 girl10 小时前
Java学习七 Java 项目实战1-项目创建和主页面搭建
java·开发语言·学习
XiaoMaqqqq11 小时前
市面上正规的IP驱动产业新场景新工具哪家强
运维·python·网络协议·tcp/ip