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

Selenium网页爬虫无法抓取目标标签问题求助

问题:Selenium无法抓取WSJ文章段落标签,返回结果长度为0

我尝试抓取WSJ某篇文章中的段落标签,目标页面链接为https://www.wsj.com/articles/chinese-health-official-raises-covid-alarm-ahead-of-lunar-new-year-holiday-11672664635(需抓取的标签不在付费墙后),相关标签显示目标元素的类名为css-xbvutc-Paragraph e3t0jlg0。但执行以下Python代码后,paragraphs长度为0,无法正确获取目标标签:

from selenium import webdriver
from selenium.webdriver.common.by import By

url = 'https://www.wsj.com/articles/chinese-health-official-raises-covid-alarm-ahead-of-lunar-new-year-holiday-11672664635'

driver = webdriver.Chrome()
driver.get(url)

paragraphs = driver.find_elements(By.CLASS_NAME, 'css-xbvutc-Paragraph e3t0jlg0')

print(len(paragraphs)) # => prints 0

问题原因与解决办法

错误原因

By.CLASS_NAME仅支持传入单个类名,你传入的是两个类名(css-xbvutc-Paragraph和e3t0jlg0),Selenium会将整个字符串视为一个完整的类名去匹配,而页面中没有元素拥有这个复合类名,因此返回空列表。

解决办法

  1. 使用CSS选择器匹配多类元素
    通过By.CSS_SELECTOR同时指定两个类名(类名间无空格,表示元素同时拥有这两个类):

    paragraphs = driver.find_elements(By.CSS_SELECTOR, '.css-xbvutc-Paragraph.e3t0jlg0')
    
  2. 使用单个唯一类名
    如果其中一个类名(比如css-xbvutc-Paragraph)足以唯一定位目标元素,直接用单个类名即可:

    paragraphs = driver.find_elements(By.CLASS_NAME, 'css-xbvutc-Paragraph')
    
  3. 添加显式等待(推荐)
    页面加载可能存在延迟,添加显式等待确保元素渲染完成,避免因加载未完成导致的抓取失败:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    # 等待10秒,直到目标元素出现
    paragraphs = WebDriverWait(driver, 10).until(
        EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.css-xbvutc-Paragraph.e3t0jlg0'))
    )
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:11:02