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

相关推荐
David Bates5 分钟前
代码随想录第40天:图论1
python·算法·图论
前进的程序员7 分钟前
C 语言编码规范
c语言·开发语言
开心码农1号12 分钟前
Go语言中 源文件开头的 // +build 注释的用法
开发语言·后端·golang
北极象14 分钟前
Go主要里程碑版本及其新增特性
开发语言·后端·golang
Johny_Zhao18 分钟前
堆叠、MLAG、VPC、VSS 技术对比及架构建议
linux·网络·人工智能·python·网络安全·ai·信息安全·云计算·cisco·等保测评·huawei·系统运维
颜淡慕潇18 分钟前
【Python】超全常用 conda 命令整理
chrome·python·conda
jie1889457586622 分钟前
Python中,正则表达式,
开发语言·python·正则表达式
waterHBO25 分钟前
python 上海新闻爬虫, 上观新闻 + 腾讯新闻
爬虫·python
白开水就盒饭34 分钟前
Python代码编程基础
windows·python·microsoft
Auc2435 分钟前
Java 原生实现代码沙箱(OJ判题系统第1期)——设计思路、实现步骤、代码实现
java·开发语言·python