You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python的Selenium中通过类名定位特定div元素?

在Python的Selenium中通过类名查找特定div元素的方法

当然有,Selenium本身就提供了直接通过类名定位元素的方法,不需要先导出页面源码再用BeautifulSoup解析(不过两种方式都可行),下面分两种场景说明:

一、Selenium原生直接定位(推荐)

Selenium的By类提供了CLASS_NAME定位方式,能直接找到匹配类名的div元素:

1. 查找单个匹配的div元素

使用find_element(By.CLASS_NAME, "类名"),会返回页面中第一个符合条件的div:

single_div = driver.find_element(By.CLASS_NAME, "col-6")

2. 查找所有匹配的div元素

使用find_elements(By.CLASS_NAME, "类名"),会返回所有符合条件的div元素列表:

all_divs = driver.find_elements(By.CLASS_NAME, "col-6")

修正后的完整示例代码

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

driver = webdriver.Chrome(executable_path="/home/earth/Downloads/Python/chromedriver_linux64 (2)/chromedriver.exe")

driver.get("https://demo1.devmarketidiot.com/")
driver.maximize_window()
time.sleep(2)
# 修正原XPATH的语法错误(缺少*)
driver.find_element(By.XPATH,"//*[@id='__next']/div/div[1]/div/div/nav[1]/div/div/a[2]").click()
time.sleep(2)  # 等待页面跳转加载完成

# 定位单个类名为col-6的div
single_div = driver.find_element(By.CLASS_NAME, "col-6")
print("单个div内容:", single_div.text)

# 定位所有类名为col-6的div
all_divs = driver.find_elements(By.CLASS_NAME, "col-6")
print(f"共找到{len(all_divs)}个匹配的div")
for idx, div in enumerate(all_divs):
    print(f"第{idx+1}个div内容:", div.text)

driver.quit()

二、结合BeautifulSoup的方式(你的代码思路)

如果一定要用BeautifulSoup解析页面源码,你代码里的find('div', class_="col-6")就是正确的写法,注意class_是因为class是Python关键字,所以用下划线区分。如果要找所有匹配的div,换成find_all('div', class_="col-6")即可:

from bs4 import BeautifulSoup

html = driver.page_source
soup = BeautifulSoup(html, 'lxml')

# 单个匹配div
single_div = soup.find('div', class_="col-6")
# 所有匹配div
all_divs = soup.find_all('div', class_="col-6")

注意事项

  • 如果元素有多个类名(比如class="col-6 container"),By.CLASS_NAME无法直接匹配,此时可以用CSS选择器:driver.find_element(By.CSS_SELECTOR, "div.col-6.container")
  • 尽量避免用time.sleep()硬等待,推荐用显式等待确保元素加载完成,示例:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待元素可点击后再操作
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='__next']/div/div[1]/div/div/nav[1]/div/div/a[2]"))).click()

# 等待目标div出现后再定位
target_div = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "col-6")))

内容的提问来源于stack exchange,提问作者Pooja Patil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 09:05:19