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

使用Beautiful Soup爬取含_ngcontent的内容时循环无返回怎么办?

爬取含_ngcontent标识的文本解决方案

问题分析

  1. 选择器写法错误:你写的soup.findAll("label _ngcontent-lpf-c7", attrs={"class":"valor"})是错的,第一个参数应该是标签名(这里是label),_ngcontent-lpf-c7是Angular生成的动态属性,不是标签的一部分。
  2. _ngcontent是Angular的样式隔离标识,每次刷新页面都会随机变化,硬编码这个值肯定匹配不到元素。
  3. 如果内容在弹窗里,大概率是JavaScript动态加载的,requests.get只能获取页面初始HTML,拿不到JS渲染后的弹窗内容。

解决方案

方案一:修正BeautifulSoup选择器(仅适用于内容已在初始HTML中)

不用管_ngcontent属性,直接匹配label标签且class为valor的元素:

from bs4 import BeautifulSoup as bs
import requests

url = 'https://formosodoaraguaia.megasofttransparencia.com.br/receitas-e-despesas/empenho?faseDoEmpenho=4&etapaDaDespesa=4&dataInicial=01%2F01%2F2019'
page_to_scrap = requests.get(url)
soup = bs(page_to_scrap.text, 'html.parser')

# 匹配所有class为valor的label标签
data = soup.find_all("label", class_="valor")

for item in data:
    print(item.text.strip())

方案二:用Selenium模拟浏览器渲染(处理动态加载的弹窗内容)

如果内容是点击后才弹出的动态内容,必须用Selenium模拟浏览器操作,等待弹窗加载完成后再抓取:

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

url = 'https://formosodoaraguaia.megasofttransparencia.com.br/receitas-e-despesas/empenho?faseDoEmpenho=4&etapaDaDespesa=4&dataInicial=01%2F01%2F2019'

# 初始化Chrome浏览器(需提前下载对应版本的chromedriver)
driver = webdriver.Chrome()
driver.get(url)

try:
    # 若需要点击按钮触发弹窗,先等待按钮可点击(替换成实际按钮的选择器)
    # trigger_btn = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "触发弹窗的按钮选择器")))
    # trigger_btn.click()

    # 等待弹窗中的目标元素加载完成,匹配class为valor的label
    labels = WebDriverWait(driver, 10).until(
        EC.presence_of_all_elements_located((By.CSS_SELECTOR, "label.valor"))
    )

    for label in labels:
        print(label.text.strip())
finally:
    driver.quit()

关键说明

  • Angular的_ngcontent属性是动态生成的,永远不要硬编码这个值,直接忽略它,通过元素的固定属性(比如class、文本特征)来定位。
  • 动态加载的内容(弹窗、滚动加载等)必须用浏览器渲染工具(Selenium、Playwright等),因为requests无法执行JavaScript,拿不到动态生成的DOM。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 02:35:07