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

如何使用Selenium打开链接列表并抓取路透社文章文本内容

问题原因
  • 变量未初始化:代码直接对full_text执行append操作,没有预先定义full_text = [],首次运行会直接报错,即便之前有定义也可能因为旧值被清空导致返回空列表。
  • XPath定位失效:你使用的绝对路径XPath稳定性极差,路透社文章页面DOM结构更新后该路径已经完全匹配不到任何段落元素,这是返回空列表的核心原因。
  • 硬等待不可靠:time.sleep(5)属于强制固定等待,若网络波动导致5秒内正文还未完成渲染,此时查找元素也会返回空结果。
修复方案

建议改用相对路径XPath定位正文,同时用Selenium显式等待替代硬等待,兼容不同网络环境下的加载场景,完整修改后代码如下:

# 提前导入依赖模块(如果之前没导入的话需要加)
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化存储正文的列表
full_text = []

for article in article_links:
    driver.get(article)
    # 显式等待最多10秒,直到正文段落加载完成
    wait = WebDriverWait(driver, 10)
    try:
        # 等待正文容器加载完成再执行提取
        wait.until(EC.presence_of_element_located((By.XPATH, "//div[contains(@class, 'article-body__content')]/p")))
        # 提取所有正文段落
        for p in driver.find_elements(By.XPATH, "//div[contains(@class, 'article-body__content')]/p"):
            full_text.append(p.text)
    except:
        # 单个链接提取失败跳过,避免整个程序中断
        print(f"链接{article}提取失败,已跳过")
        continue

# 输出最终结果
print(full_text)

注:如果你的Selenium版本低于4.0,也可以把find_elements(By.XPATH, xxx)换回原来的find_elements_by_xpath(xxx)写法,同样可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 13:24:04