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

使用Selenium获取网页捐赠者列表时遇弹窗,无法打印元素内容求助

解决办法

1. 先处理页面弹窗

页面弹窗(多为Cookie授权或订阅弹窗)会干扰元素定位,必须先关闭:

  • 用显式等待替代固定休眠,确保弹窗元素加载完成后再操作
  • 找到弹窗的关闭按钮(比如"Accept Cookies"按钮、叉号图标),执行点击动作

2. 正确获取目标列表内容

原代码仅定位单个<li>元素且打印的是WebElement对象,无法输出实际文本,需调整:

  • 使用find_elements系列方法获取所有目标<li>元素
  • 遍历元素列表,通过.text属性提取文本内容

优化后的代码示例

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
import time

# 初始化浏览器
driver = webdriver.Chrome(r"C:\Users\tamilarasua\Selenium\chromedriver.exe")
driver.get("https://www.indianmountain.org/reportofgiving/")

try:
    # 处理Cookie弹窗(根据实际弹窗元素调整定位规则)
    accept_btn = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, '//button[contains(text(),"Accept")]'))
    )
    accept_btn.click()
    time.sleep(1)  # 弹窗关闭后等待页面稳定

    # 等待目标tab内容加载完成
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, '//div[@id="elementor-tab-content-2391"]//ul'))
    )

    # 获取所有捐赠者列表项
    donors = driver.find_elements(By.XPATH, '//div[@id="elementor-tab-content-2391"]//ul//li')
    
    # 打印每个捐赠者内容
    for idx, donor in enumerate(donors, 1):
        print(f"{idx}. {donor.text}")

finally:
    # 关闭浏览器
    time.sleep(3)
    driver.quit()

额外提示

  • 如果弹窗定位失败,打开浏览器开发者工具(F12)查看弹窗元素的实际属性(id、class、文本等),调整定位规则
  • 优先用显式等待替代time.sleep(),提升代码稳定性
  • 若目标内容在未激活的标签页(tab)中,需先点击对应tab标签,再获取内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:30:05