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

选择下拉框后URL未变化,无法爬取克林顿基金会网站数据排查

问题修复方案

你的代码存在几个关键问题,导致无法成功爬取数据,以下是问题分析和修复方案:

核心问题分析

  • 动态内容请求错误:选择"ALL"后页面数据是通过JavaScript动态渲染的,requests.get(current_url)获取的是页面初始静态内容,并非加载后的完整捐赠者数据。
  • 未定义变量报错:代码中donor_list未声明就直接调用find_all,会触发NameError。
  • 下拉框操作方式错误:该下拉框是标准select元素,应使用Selenium的Select类处理,而非点击后查找链接文本。
  • 等待逻辑不稳定:仅靠time.sleep(5)无法确保数据完全加载,容易出现元素未找到的情况。

修复后的代码

import pandas as pd
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化浏览器驱动(注意:ChromeDriver版本需与本地Chrome浏览器匹配)
driver = webdriver.Chrome()
driver.get("https://www.clintonfoundation.org/about-the-clinton-foundation#reports-financials/")

try:
    # 显式等待下拉框加载完成,用Select类选择"ALL"选项
    dropdown = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "filtered-list-taxonomy"))
    )
    select = Select(dropdown)
    select.select_by_visible_text("ALL")

    # 等待捐赠者列表完全加载
    WebDriverWait(driver, 15).until(
        EC.presence_of_all_elements_located((By.CLASS_NAME, "items-list-block-item"))
    )

    # 从已渲染的页面中提取数据
    donor_items = driver.find_elements(By.CLASS_NAME, "items-list-block-item")
    donors = []
    for item in donor_items:
        name = item.find_element(By.TAG_NAME, "h3").text.strip()
        amount = item.find_element(By.CLASS_NAME, "item-amount").text.strip()
        donors.append({"捐赠者姓名": name, "捐赠区间": amount})

    # 转换为DataFrame并保存
    df = pd.DataFrame(donors)
    print(df.head())
    df.to_csv("克林顿基金会捐赠者数据.csv", index=False, encoding="utf-8-sig")

finally:
    driver.quit()

额外说明

  • 需保证ChromeDriver版本与本地Chrome浏览器版本一致,否则会出现驱动不兼容问题。
  • 若页面加载缓慢,可适当调整显式等待的超时时间(如将10改为15)。
  • 动态页面爬取时,无需用requests重新请求URL,直接通过Selenium操作已渲染的页面即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 23:47:52