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

Windows下Selenium爬取detik财经出现Failed to read descriptor报错如何解决

问题分析与解决方案

1 非核心报错说明

你输出日志里的USB、Bluetooth相关报错是Chrome浏览器在Windows环境下的底层设备检测日志,和元素定位失败的问题没有任何关联,不需要针对这两个报错做处理,若需隐藏可通过Chrome启动参数屏蔽。

2 元素定位失败的核心原因与修复点

  • 废弃API使用问题:find_elements_by_class_name是Selenium 4.0+版本已弃用的定位方法,目前主流Selenium版本均不支持该写法,需替换为新的定位语法,首先要导入By依赖:from selenium.webdriver.common.by import By,再将定位语句修改为driver.find_elements(By.CLASS_NAME, "目标类名")
  • 定位值错误:你当前使用的just_test是测试占位值,不存在于目标页面结构中,该站点财经索引页的新闻列表条目类名为list-content__item,可替换为该值完成定位
  • 路径转义问题:你配置的chromedriver路径D:\chromedriver.exe中\属于Python字符串转义符,会导致路径解析异常,需修改为r"D:\chromedriver.exe"或D:/chromedriver.exe
  • 加载稳定性优化:强制sleep(3)在网络波动时容易出现页面未加载完成就执行定位的问题,可替换为显式等待提高稳定性

3 完整修复后代码

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

# 配置Chrome参数屏蔽无关日志
chrome_options = Options()
chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"])

# 初始化driver,注意路径转义
driver = webdriver.Chrome(executable_path=r"D:\chromedriver.exe", options=chrome_options)
driver.get("https://finance.detik.com/indeks")

# 显式等待最多10秒,直到新闻列表元素加载完成
try:
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "list-content__item"))
    )
    articles = driver.find_elements(By.CLASS_NAME, "list-content__item")
    for article in articles:
        # 可根据需要提取标题、链接等内容,此处示例打印文本
        print(article.text)
finally:
    driver.close()
    driver.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:06:03