当前位置: 首页 > news >正文

Python Selenium 一小时速通教程

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

一、环境配置(10分钟)
  1. 安装Python
    确保已安装Python 3.x(官网下载)。

  2. 安装Selenium
    在终端运行:

    pip install selenium
    
  3. 下载浏览器驱动

    • Chrome:访问 ChromeDriver官网,选择与浏览器版本匹配的驱动。
    • Firefox:下载 geckodriver。
    • Edge:下载 Microsoft WebDriver。

    驱动放置位置

    • 直接放在Python安装目录的 Scripts 文件夹,或
    • 在代码中指定路径(如 executable_path=r'C:\path\to\chromedriver.exe')。
  4. 验证安装
    运行以下代码,若弹出浏览器窗口则成功:

    from selenium import webdriver
    driver = webdriver.Chrome()  # 或 Firefox() / Edge()
    driver.get("https://www.baidu.com")
    driver.quit()
    

二、核心功能(20分钟)
1. 浏览器操作
from selenium import webdriver# 启动浏览器
driver = webdriver.Chrome()# 打开网页
driver.get("https://www.csdn.net")# 后退/前进
driver.back()
driver.forward()# 刷新页面
driver.refresh()# 关闭浏览器(关闭所有窗口用 quit())
driver.close()
2. 元素定位(8种方法)
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. 元素操作
# 输入文本
element.send_keys("Hello Selenium")# 点击元素
element.click()# 清空输入框
element.clear()# 获取属性(如链接的href)
href = element.get_attribute("href")# 获取文本内容
text = element.text

三、实战案例(20分钟)
案例1:自动登录CSDN
from selenium import webdriver
from selenium.webdriver.common.by import By
import timedriver = 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:抓取京东商品数据
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import timedef 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").textprice = good.find_element(By.CSS_SELECTOR, ".p-price i").textlink = good.find_element(By.TAG_NAME, "a").get_attribute("href")print(f"名称: {name}, 价格: {price}, 链接: {link}")driver.quit()jd_spider("Python书籍")
案例3:无头浏览器模式(后台运行)
from selenium.webdriver.chrome.options import Optionschrome_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. 显式等待(避免元素未加载导致的错误)

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as ECelement = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "submit_button"))
    )
    
  2. 处理弹窗

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

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

    from selenium.common.exceptions import NoSuchElementExceptiontry:element = driver.find_element(By.ID, "non_existent_id")
    except NoSuchElementException:print("元素未找到!")
    

总结
  • 1小时学习路径:环境配置 → 浏览器操作 → 元素定位 → 实战案例 → 进阶技巧。
  • 关键注意事项
    • 驱动版本必须与浏览器匹配。
    • 优先使用ID或name定位,复杂场景用XPath/CSS。
    • 合理使用等待机制避免操作失败。

通过这4个模块,你可以快速掌握Selenium的核心用法,并直接运行提供的案例代码!

相关文章:

  • 2025 年网络安全的挑战与机遇
  • 静态链接part2
  • 青少年编程与数学 02-016 Python数据结构与算法 24课题、密码学算法
  • Spring Boot一次接口请求涉及的完整执行链路
  • vs2022使用git方法
  • 天元证券|调仓曝光!首批科技基金一季报出炉
  • 数字资产和交易解决方案
  • Nautilus 正式发布:为 Sui 带来可验证的链下隐私计算
  • 【Bluedroid】A2DP Sink播放流程源码分析(三)
  • 东方潮流亮相广州益民艺术馆|朋克编码“艺术家潮玩”系列开幕引爆热潮
  • 计算机网络中科大 - 第7章 网络安全(详细解析)-以及案例
  • 麒麟v10-ky10.x86_64开启日志审计(audit)
  • [特殊字符] MySQL MCP 开发实战:打造智能数据库操作助手
  • 红宝书第四十六讲:Node.js基础与API设计解析
  • 2025年保安员考试题库及答案
  • 【学习笔记】计算机网络(九)—— 无线网络和移动网络
  • Node.js 中文件系统模块(`fs`)的详细总结,包括定义、作用、各种写入方式及使用场景
  • WebSocket 用法
  • 【Linux】线程同步与互斥 (生产者消费者模型)
  • YOLOV8 OBB 海思3516训练流程
  • 免费做请帖的网站/seo是干什么的
  • 怎么做单位网站/seo专业论坛
  • 四川华远建设工程有限公司网站/网络营销推广公司名称
  • 篮球运动装备网站模板/上海seo顾问
  • 外贸开源网站/沈阳网站制作优化推广
  • 莘县聊城做网站/企业qq一年多少费用