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

使用BeautifulSoup爬取巴西央行会议纪要网页返回空结果如何解决

巴西央行会议纪要爬取空返回问题解决方案

失效原因

原代码使用的requests库只能获取页面初始静态HTML内容,而目标页面的会议纪要内容是通过JavaScript异步加载后渲染的,初始HTML中不存在p.paragrafo对应的元素,因此BeautifulSoup无法匹配到目标内容。

解决方案

方案1:直接调用官方公开API(推荐,性能最优)

该页面的所有会议纪要数据均通过公开接口返回,无需渲染页面即可直接获取结构化数据,运行速度快、反爬限制低。
使用代码示例:

import requests

# 请求头伪装为浏览器,避免被反爬拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
}

# 拉取会议纪要列表接口,quantidade为返回条数,pagina为页码
list_url = "https://www.bcb.gov.br/api/servico/sitebcb/atascopom?quantidade=20&pagina=1"
list_res = requests.get(list_url, headers=headers)
list_res.raise_for_status()
meeting_list = list_res.json()["conteudo"]

# 遍历获取单篇会议纪要完整内容
for meeting in meeting_list:
    detail_url = f"https://www.bcb.gov.br/api/servico/sitebcb/atascopom/conteudos/{meeting['id']}"
    detail_res = requests.get(detail_url, headers=headers)
    detail_res.raise_for_status()
    detail = detail_res.json()["conteudo"]
    # 输出会议标题和完整文本
    print(detail["titulo"])
    print(detail["texto"])
    print("="*60)

方案2:无头浏览器模拟渲染(适合通用动态页面场景)

如果没有找到对应接口,可以用工具模拟浏览器运行,等待JS渲染完成后再提取内容,兼容你原有BeautifulSoup的解析逻辑。
操作步骤:

  • 首先安装依赖:
    pip install playwright
    playwright install chromium
  • 代码示例:
from playwright.sync_api import sync_playwright
from bs4 import BeautifulSoup
import requests

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
}
url = "https://www.bcb.gov.br/publicacoes/atascopom"

with sync_playwright() as p:
    # 启动无头Chromium浏览器
    browser = p.chromium.launch(headless=True)
    page = browser.new_page(user_agent=headers["User-Agent"])
    page.goto(url, wait_until="networkidle")
    # 等待目标元素加载完成
    page.wait_for_selector("p.paragrafo", timeout=10000)
    # 获取渲染完成的页面源码
    full_html = page.content()
    browser.close()

# 沿用原有BeautifulSoup解析逻辑
soup = BeautifulSoup(full_html, "lxml")
print(soup.find_all("p", class_="paragrafo"))

注意事项

  • 爬取时控制请求频率,避免给目标站点造成过大压力
  • 接口方案中调整quantidade参数可修改单次返回的会议纪要条数,pagina参数可翻页获取历史数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 04:12:03