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

如何用Selenium提取Web元素文本?解决LeetCode爬取报错及警告

解决LeetCode题目爬取的两个问题:AttributeError与DeprecationWarning

问题1:AttributeError: 'list' object has no attribute 'text'

你用driver.find_elements(By.XPATH, xpath_expression)获取到的是元素列表,不是单个WebElement对象,所以不能直接调用.get_attribute('text')或者.text属性。另外,你写的是绝对XPath,页面结构稍有变动就会失效,建议改用更稳定的相对定位方式。同时LeetCode页面是动态加载的,直接获取元素可能会因为元素未加载完成而返回空列表,需要添加显式等待确保元素加载完毕。

修复步骤:

  • 若要获取单个题目标题,改用driver.find_element(By.XPATH, xpath_expression)(单数形式);若要获取所有题目标题,遍历find_elements返回的列表,逐个提取文本。
  • 替换绝对XPath为相对路径,比如通过题目列表的class属性定位,示例://div[@class='h-5']/a(对应题目标题的链接元素)。
  • 添加显式等待,使用WebDriverWait等待元素可见。

问题2:DeprecationWarning: log_path has been deprecated, please use log_output

Selenium的Service类中log_path参数已被弃用,官方建议改用log_output参数来指定日志输出路径。

修复步骤:

  • 将service = Service(executable_path=gecko, log_path='geckodriver.log')改为service = Service(executable_path=gecko, log_output='geckodriver.log')。

修改后的完整代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# URL of the page with questions
url = 'https://leetcode.com/problemset/all/?page=1&topicSlugs=array'
gecko_path = '你的geckodriver路径'  # 替换为实际路径

# 更稳定的相对XPath,定位所有题目标题链接
xpath_expression = "//div[@class='h-5']/a"

options = Options()
# 修复日志参数警告
service = Service(executable_path=gecko_path, log_output='geckodriver.log')
driver = webdriver.Firefox(service=service, options=options)
driver.get(url)

try:
    # 显式等待元素加载,最长等待10秒
    wait = WebDriverWait(driver, 10)
    elements = wait.until(EC.visibility_of_all_elements_located((By.XPATH, xpath_expression)))
    
    # 遍历所有元素,提取文本
    for idx, element in enumerate(elements, 1):
        print(f"第{idx}题:{element.text}")
finally:
    driver.quit()

关键改动说明:

  1. 结合显式等待使用find_elements,确保元素加载完成后再获取。
  2. 改用相对XPath,提升代码对页面结构变动的适应性。
  3. 将log_path改为log_output,消除弃用警告。
  4. 使用try-finally确保浏览器正常关闭,避免资源泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 10:25:07