Scraping Avançado de Dados Financeiros e Notícias com Python
Neste artigo, você vai aprender como realizar scraping avançado de dados financeiros e notícias com Python, utilizando bibliotecas poderosas como requests
, BeautifulSoup
, pandas
, selenium
e newspaper3k
.
Também veremos técnicas para lidar com sites dinâmicos, estruturar dados e até automatizar o processo de coleta e atualização.
1. O que é Web Scraping e por que é importante em finanças
Web scraping é o processo de coletar informações automaticamente de páginas da web.
No mercado financeiro, isso permite:
Obter cotações de ações, moedas, índices e commodities em tempo real.
Coletar notícias e comunicados que podem impactar decisões de investimento.
Construir bases históricas de dados para backtesting e análise de tendências.
Automatizar tarefas repetitivas, como relatórios de mercado.
Python é ideal para isso porque combina simplicidade, velocidade e uma ampla gama de bibliotecas voltadas à extração, tratamento e análise de dados.
2. Ferramentas e bibliotecas utilizadas
Para realizar scraping avançado, você precisará conhecer algumas ferramentas essenciais:
Biblioteca | Função principal |
---|---|
requests | Acessar o conteúdo HTML de páginas. |
BeautifulSoup | Extrair e estruturar informações de HTML. |
pandas | Organizar e tratar os dados coletados. |
selenium | Interagir com páginas dinâmicas (JavaScript). |
newspaper3k | Coletar e analisar notícias automaticamente. |
yfinance | Acessar dados financeiros diretamente da API do Yahoo Finance. |
Instale-as executando:
pip install requests beautifulsoup4 pandas selenium newspaper3k yfinance
3. Coletando dados financeiros com yfinance
Antes de fazer scraping manual, vale explorar a biblioteca yfinance, que acessa dados de mercado direto da API do Yahoo Finance — uma das fontes públicas mais completas.
import yfinance as yf
# Coletar dados da ação da Petrobras (PETR4.SA)
petr4 = yf.Ticker("PETR4.SA")
# Histórico de preços
historico = petr4.history(period="1y")
print(historico.head())
# Informações fundamentais
info = petr4.info
print(info["sector"], info["marketCap"])
O yfinance
oferece preços históricos, dividendos, volume, valor de mercado e muito mais, sem precisar realizar scraping direto no site.
4. Scraping de cotações com requests
e BeautifulSoup
Quando os dados não estão disponíveis em APIs, o scraping direto é uma alternativa.
Veja um exemplo extraindo informações do site Investing.com (estrutura ilustrativa):
import requests
from bs4 import BeautifulSoup
url = "https://br.investing.com/equities/petrobras-on"
headers = {"User-Agent": "Mozilla/5.0"}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, "html.parser")
# Exemplo: buscar o preço atual da ação
preco = soup.find("div", {"class": "text-2xl"}).text.strip()
print("Cotação atual da PETR4:", preco)
Esse exemplo mostra o básico, mas é possível expandir para capturar variações percentuais, volume, máxima/mínima do dia, e até gráficos embutidos.
5. Extraindo notícias financeiras com newspaper3k
O newspaper3k é uma das bibliotecas mais poderosas para coletar textos de artigos e notícias.
Ela extrai automaticamente título, autor, data, texto e palavras-chave.
from newspaper import Article
url = "https://www.infomoney.com.br/mercados/petrobras-anuncia-novos-investimentos/"
artigo = Article(url, language="pt")
artigo.download()
artigo.parse()
print("Título:", artigo.title)
print("Data:", artigo.publish_date)
print("Texto:", artigo.text[:500]) # Exibe parte do texto
Com esse método, você pode criar robôs de leitura automática de notícias, que salvam os dados em um banco de dados para posterior análise de sentimento, correlação com variações de preço, ou resumo automático.
6. Coletando dados de sites dinâmicos com selenium
Alguns sites (como Bloomberg, CNBC ou Google Finance) carregam as informações via JavaScript — o que impede o acesso direto com requests
.
Para esses casos, o Selenium é a ferramenta ideal, pois simula um navegador real.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Configurações do Chrome
options = Options()
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)
url = "https://www.bloomberg.com/markets"
driver.get(url)
# Exemplo: capturar manchetes principais
titulos = driver.find_elements("css selector", "h3.headline")
for t in titulos[:5]:
print("-", t.text)
driver.quit()
Com selenium
, é possível clicar em botões, preencher formulários e extrair conteúdo de páginas que atualizam dinamicamente.
7. Estruturando os dados coletados com Pandas
Após coletar as informações, o ideal é organizá-las em uma estrutura tabular para análise posterior:
import pandas as pd
dados = {
"Título": ["Notícia 1", "Notícia 2"],
"Data": ["2025-10-04", "2025-10-03"],
"Link": ["https://site1.com", "https://site2.com"]
}
df = pd.DataFrame(dados)
df.to_excel("noticias_financeiras.xlsx", index=False)
print("Relatório salvo com sucesso.")
Esses dados podem ser utilizados para análises estatísticas, criação de dashboards ou integração com sistemas de Business Intelligence (BI).
8. Automação e atualização periódica
Para tornar o scraping contínuo, você pode agendar execuções automáticas com o módulo schedule
:
import schedule
import time
def atualizar_dados():
print("Atualizando dados financeiros e notícias...")
# Chamar funções de scraping aqui
schedule.every().day.at("08:00").do(atualizar_dados)
while True:
schedule.run_pending()
time.sleep(60)
Dessa forma, seu sistema coleta dados de forma automática diariamente, gerando relatórios sempre atualizados.
9. Cuidados éticos e legais no scraping
É importante ressaltar que nem todo site permite scraping.
Antes de realizar qualquer extração automatizada, verifique o arquivo robots.txt
do domínio (por exemplo, https://site.com/robots.txt
) para entender o que é permitido.
Evite também sobrecarregar servidores com requisições excessivas — utilize intervalos entre as coletas e cache de resultados sempre que possível.
10. Conclusão
O scraping avançado de dados financeiros e notícias com Python é uma ferramenta poderosa para quem deseja extrair insights do mercado em tempo real.
Com o uso combinado de yfinance
, BeautifulSoup
, Selenium
e newspaper3k
, é possível:
Obter dados atualizados de ações, moedas e índices;
Coletar e processar notícias automaticamente;
Integrar fontes diversas em relatórios e dashboards;
Automatizar a atualização de bases financeiras.
Essa automação reduz o esforço manual e oferece vantagem competitiva, permitindo decisões mais rápidas e embasadas.
Comentários
Postar um comentário