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

使用Selenium提取维基百科文章数量时遇NoSuchElementException求助

解决Selenium爬取维基百科文章数量时的NoSuchElementException错误

问题重现

尝试爬取英文维基百科主页的文章数量,编写的代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
driver=webdriver.Chrome()
driver.get("https://en.wikipedia.org/wiki/Main_Page")
driver.implicitly_wait(5)
statistic=driver.find_element(By.CSS_SELECTOR,value=".articlecount a")
print(statistic.text)

运行时抛出NoSuchElementException,核心错误信息:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".articlecount a"}

排查原因

  1. 页面结构更新:维基百科的页面元素类名或布局已发生变化,原代码依赖的.articlecount类已不存在,导致选择器完全失效。
  2. 隐式等待局限性:隐式等待仅等待元素存在,但如果页面加载后元素仍需动态渲染,5秒时长可能不足以覆盖,且无法精准等待目标元素的可见状态。

解决方法

1. 更新元素选择器

当前英文维基百科主页的文章数量统计项,位于页面右侧的"Wikipedia statistics"区域,可使用更稳定的选择器定位:

  • 精准选择器:li.mw-statistics-item:nth-child(1) .mw-statistics-item__value a(匹配第一个统计项的数值链接)
  • 简洁选择器:.mw-statistics-item__value a(若需确保是文章数量,可结合文本筛选逻辑)

2. 改用显式等待

显式等待可以精准等待目标元素可见,避免因动态加载导致的元素未就绪问题,比隐式等待更可靠。

修改后的代码

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

driver = webdriver.Chrome()
driver.get("https://en.wikipedia.org/wiki/Main_Page")

# 显式等待10秒,直到目标元素可见
statistic = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.CSS_SELECTOR, "li.mw-statistics-item:nth-child(1) .mw-statistics-item__value a"))
)

print(statistic.text)
driver.quit()

额外验证建议

如果后续选择器再次失效,可通过浏览器开发者工具(F12)直接定位元素:

  • 右键点击文章数量数值,选择"检查"
  • 复制元素的CSS选择器或XPath,替换代码中的选择器即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 04:20:32