如何用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()
关键改动说明:
- 结合显式等待使用
find_elements,确保元素加载完成后再获取。 - 改用相对XPath,提升代码对页面结构变动的适应性。
- 将
log_path改为log_output,消除弃用警告。 - 使用
try-finally确保浏览器正常关闭,避免资源泄漏。
内容的提问来源于stack exchange,提问作者amspsingh04
相关产品推荐
相关产品推荐

