1

I am trying to scrape the text from the minutes published in the webpage of the central bank of Brazil:

https://www.bcb.gov.br/publicacoes/atascopom

Have tried to use BeautifulSoup as per the code below, but only get empty results

url = "https://www.bcb.gov.br/publicacoes/atascopom"
html_text = requests.get(url)
soup = BeautifulSoup(html_text.content, 'lxml')
print(soup.find_all('p', class_='paragrafo'))

After doing a lot of research, it seems the problem has to do with the JavaScript, but I do not know how to fix it (new to Python). The same code works fine when scraping similar text from other central bank webpages.

Anyone has any idea on how to fix it?

TiagoS
  • 11
  • 2

3 Answers3

0

The problem is that the website uses JavaScript to render the content. Requests library doesn't have JavaScript support. You can try using selenium or requests_html for this purpose. More details can be found in this question.

nisiddharth
  • 20
  • 1
  • 5
0

On the other hand, that site provides RSS-feeds here https://www.bcb.gov.br/acessoinformacao/rss and there is the Atas do Copom feed.

Following is possible method to start with

import requests
from bs4 import BeautifulSoup

url = "https://www.bcb.gov.br/api/feed/sitebcb/sitefeeds/atascopom"
html_text = requests.get(url)
soup = BeautifulSoup(html_text.content, 'xml')
print(soup.find_all('content'))
crayxt
  • 2,367
  • 2
  • 12
  • 17
0

The data is loaded from external URL in Json format. You can use next example how to load it:

import requests
import textwrap
from bs4 import BeautifulSoup

url = "https://www.bcb.gov.br/api/servico/sitebcb/atascopom/principal?filtro="

data = requests.get(url).json()

soup = BeautifulSoup(data["conteudo"][0]["OutrasInformacoes"], "html.parser")
print("\n".join(textwrap.wrap(soup.get_text(strip=True, separator=" "))))
print()
print("PDF:", data["conteudo"][0]["Url"])

Prints:

A) Atualização da conjuntura econômica e do cenário básico do Copom 1
1. No cenário externo, estímulos fiscais e monetários em alguns países
desenvolvidos promovem uma recuperação robusta da atividade econômica.
Devido à presença de ociosidade, a comunicação dos principais bancos
centrais sugere que os estímulos monetários terão longa duração.
Contudo, a incerteza segue elevada e uma nova rodada de
questionamentos dos mercados a respeito dos riscos inflacionários
nessas economias pode tornar o ambiente desafiador para países
emergentes. 2. Em relação à atividade econômica brasileira, apesar da
intensidade da segunda onda da pandemia, os indicadores recentes
continuam mostrando evolução mais positiva do que o esperado,
implicando revisões relevantes nas projeções de crescimento. Os riscos
para a recuperação econômica reduziram-se significativamente. 3. As

...

a evolução recente e as perspectivas para a economia brasileira e para
a economia internacional, no contexto do regime de política monetária,
cujo objetivo é atingir as metas fixadas pelo Conselho Monetário
Nacional para a inflação.

PDF: /content/copom/atascopom/Copom239-not20210616239.pdf
Andrej Kesely
  • 168,389
  • 15
  • 48
  • 91