Python Selenium 一小时速通教程
Python Selenium 一小时速通教程 + 实战案例
一、环境配置(10分钟)
-
安装Python
确保已安装Python 3.x(官网下载)。 -
安装Selenium
在终端运行:pip install selenium
-
下载浏览器驱动
- Chrome:访问 ChromeDriver官网,选择与浏览器版本匹配的驱动。
- Firefox:下载 geckodriver。
- Edge:下载 Microsoft WebDriver。
驱动放置位置:
- 直接放在Python安装目录的
Scripts
文件夹,或 - 在代码中指定路径(如
executable_path=r'C:\path\to\chromedriver.exe'
)。
-
验证安装
运行以下代码,若弹出浏览器窗口则成功: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分钟)
-
显式等待(避免元素未加载导致的错误)
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")) )
-
处理弹窗
alert = driver.switch_to.alert alert.accept() # 确认弹窗 # alert.dismiss() # 取消弹窗
-
切换iframe
iframe = driver.find_element(By.TAG_NAME, "iframe") driver.switch_to.frame(iframe) # 操作iframe内部元素... driver.switch_to.default_content() # 切回主页面
-
异常处理
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的核心用法,并直接运行提供的案例代码!