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

如何通过Selenium抓取指定div标签内的href链接?

解决方案

要抓取class为small-cells的div标签内的所有href链接,你需要修改元素定位逻辑,将范围限定在目标div内部,同时确保页面元素加载完成后再执行抓取,避免因元素未渲染导致的空结果。

具体修改要点:

  1. 修正导入语句拼写错误:原代码第一行rom selenium import webdriver缺少字母f,应改为from selenium import webdriver。
  2. 缩小XPath定位范围:使用//div[contains(@class, 'small-cells')]//a作为定位表达式,先定位所有class包含small-cells的div,再抓取这些div内部的所有a标签。
  3. 添加显式等待:确保目标div加载完成后再查找链接,避免页面未渲染完成时抓取不到元素。

修改后的完整代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

# 初始化Chrome驱动并访问目标页面
url = "https://navalcommand.enjin.com/forum/viewforum/2989694/m/11178354/page/1"
driver = webdriver.Chrome()
driver.get(url)

try:
    # 等待class为small-cells的div加载完成,最长等待10秒
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, "//div[contains(@class, 'small-cells')]"))
    )
    
    # 抓取目标div内的所有a标签
    elems = driver.find_elements(By.XPATH, "//div[contains(@class, 'small-cells')]//a")
    
    # 遍历输出每个a标签的href属性(过滤空值)
    for elem in elems:
        href = elem.get_attribute("href")
        if href:
            print(href)
except TimeoutException:
    print("等待目标元素加载超时")
finally:
    driver.quit()  # 关闭浏览器

补充说明:

  • 如果small-cells是div的唯一class,也可以用//div[@class='small-cells']//a,但contains写法更兼容class属性包含多个值的场景(比如div的class是small-cells other-class)。
  • 添加if href:判断可以过滤掉没有href属性的a标签,避免输出空值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:05:26