El scraping directo de Google Finance es un laberinto de widgets dinámicos y selectores rotativos. La ruta más limpia utiliza consultas SERP con alcance en `site:google.com/finance` más el punto final de extracción de Scavio. Este tutorial recorre el patrón que devuelve páginas de teletipo como JSON escritas sin servidores proxy ni navegadores sin cabeza.
Requisitos previos
- Python 3.10+
- Clave API de Scavio
Guia paso a paso
Paso 1: Buscar un ticker
Scavio SERP dirigido a Google Finance.
import requests, os
API_KEY = os.environ['SCAVIO_API_KEY']
def ticker_search(symbol):
r = requests.post('https://api.scavio.dev/api/v1/google',
headers={'x-api-key': API_KEY},
json={'query': f'site:google.com/finance {symbol}'})
return r.json().get('organic_results', [])Paso 2: Extraer la página de teletipo
El extracto de Scavio devuelve una rebaja.
def fetch_ticker(url):
r = requests.post('https://api.scavio.dev/api/v1/extract',
headers={'x-api-key': API_KEY},
json={'url': url, 'format': 'markdown'})
return r.json().get('markdown', '')Paso 3: Extraer noticias relacionadas
La búsqueda de noticias de Scavio agrega contexto.
def ticker_news(symbol):
r = requests.post('https://api.scavio.dev/api/v1/google',
headers={'x-api-key': API_KEY},
json={'query': f'{symbol} stock news', 'search_type': 'news'})
return r.json().get('news_results', [])[:10]Paso 4: Verificación cruzada con SEC SERP
Encuentre presentaciones 10-Q recientes a través de SERP.
def filings(symbol):
r = requests.post('https://api.scavio.dev/api/v1/google',
headers={'x-api-key': API_KEY},
json={'query': f'site:sec.gov 10-Q {symbol}'})
return r.json().get('organic_results', [])[:5]Paso 5: Redactar resumen de teletipo
Resumen de rebajas con precios, noticias y presentaciones.
def brief(symbol):
return {'page': fetch_ticker(ticker_search(symbol)[0]['link']), 'news': ticker_news(symbol), 'filings': filings(symbol)}Ejemplo en Python
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
def finance_brief(symbol):
p = requests.post('https://api.scavio.dev/api/v1/google',
headers={'x-api-key': API_KEY},
json={'query': f'site:google.com/finance {symbol}'}).json()
n = requests.post('https://api.scavio.dev/api/v1/google',
headers={'x-api-key': API_KEY},
json={'query': f'{symbol} stock news', 'search_type': 'news'}).json()
return {'pages': p.get('organic_results',[])[:3], 'news': n.get('news_results',[])[:5]}
print(finance_brief('AAPL'))Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
export async function financeBrief(symbol) {
const headers = { 'x-api-key': API_KEY, 'Content-Type': 'application/json' };
const [p, n] = await Promise.all([
fetch('https://api.scavio.dev/api/v1/google', { method:'POST', headers, body: JSON.stringify({ query: `site:google.com/finance ${symbol}` }) }).then(r => r.json()),
fetch('https://api.scavio.dev/api/v1/google', { method:'POST', headers, body: JSON.stringify({ query: `${symbol} stock news`, search_type: 'news' }) }).then(r => r.json())
]);
return { p, n };
}Salida esperada
Per-ticker brief with Google Finance page extract, recent news, and SEC filings — all via SERP queries, no direct scraping required.