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

使用BeautifulSoup/ETree提取嵌套div中esrs-value内容失败求助

解决ESRS字段值提取不全的问题

问题原因

页面部分esrs-value元素为动态加载,直接获取page_source会漏掉未渲染的内容;同时未限定提取范围在Summary板块内,可能导致提取逻辑偏离目标区域。

解决方案

  1. 等待动态内容加载完成:用Selenium的WebDriverWait等待Summary板块核心元素出现,确保所有字段渲染完毕。
  2. 限定提取范围:先定位Summary板块的父容器,再在容器内提取esrs-value,避免跨板块干扰。

完整代码示例

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
from bs4 import BeautifulSoup
import lxml.etree as etree

driver = webdriver.Chrome()
try:
    driver.get('https://disclosures.ifc.org/project-detail/AS/604080/india-climate-smart-cities-ppp-program')
    # 等待Summary板块加载完成,定位到对应父容器
    summary_container = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, '//div[contains(@class, "esrs-section") and .//h5[text()="Summary"]]'))
    )
    # 仅获取Summary板块内的HTML内容
    summary_html = summary_container.get_attribute('innerHTML')
    
    # 用BeautifulSoup提取字段值
    soup = BeautifulSoup(summary_html, 'lxml')
    bs_values = [div.text.strip() for div in soup.find_all('div', class_='esrs-value')]
    
    # 或用ETree提取字段值
    dom = etree.HTML(summary_html)
    xpath_values = [x.text.strip() for x in dom.xpath('//div[@class="esrs-value"]')]
    
    print("提取到的Summary字段值:")
    print(bs_values)
finally:
    driver.quit()

关键说明

  • WebDriverWait设置10秒超时,足够页面加载动态内容;
  • 聚焦Summary板块的父容器解析,确保只提取目标区域的字段;
  • 用strip()清理文本前后空白,优化结果可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:30:59