En este post, vamos a aprender a hacer scraping web con python. Usando python vamos a scrapear Yahoo Finance. Esta es una gran fuente de datos del mercado de valores. Vamos a codificar un scraper para eso. Usando ese scraper serás capaz de raspar datos bursátiles de cualquier compañía desde yahoo finance. Como usted sabe que me gusta hacer las cosas muy simples, para que, también se utiliza un raspador web que aumentará su eficiencia de raspado.
¿Por qué esta herramienta? Esta herramienta nos ayudará a raspar sitios web dinámicos utilizando millones de proxies rotativos para que no nos bloqueen. También proporciona una facilidad de limpieza. Utiliza headerless chrome para scrapear sitios web dinámicos.
Generalmente, el web scraping se divide en dos partes:
- Obtención de datos haciendo una petición HTTP
- Extracción de datos importantes analizando el HTML DOM
Bibliotecas &Herramientas
- Beautiful Soup es una biblioteca de Python para extraer datos de archivos HTML y XML.
- Las solicitudes permiten enviar peticiones HTTP muy fácilmente.
- herramienta de raspado web para extraer el código HTML de la URL de destino.
Configuración
Nuestra configuración es bastante sencilla. Sólo tiene que crear una carpeta e instalar Beautiful Soup & solicitudes. Para crear una carpeta e instalar las bibliotecas escriba los comandos dados a continuación. Estoy asumiendo que usted ya ha instalado Python 3.x.
mkdir scraper
pip install beautifulsoup4
pip install requests
Ahora, crear un archivo dentro de esa carpeta por cualquier nombre que te gusta. Yo estoy usando scraping.py.
Primero, tienes que registrarte en la API de scrapingdog. Te proporcionará 1000 créditos GRATIS. A continuación, sólo la importación de Beautiful Soup & solicitudes en su archivo. como este.
from bs4 import BeautifulSoup
import requests
Lo que vamos a raspar
Aquí está la lista de campos que vamos a extraer:
- Cierre anterior
- Apertura
- Oferta
- Venta
- Rango del día
- Rango de 52 semanas
- Volumen
- Volumen medio
- Capitalización bursátil
- Beta
- Razón PE
- EPS
- Tasa de ganancia
- Dividendo adelantado &Rendimiento
- Ex.Dividendo &Fecha
- 1y objetivo EST
. Volumen
Preparando la comida
Ahora, ya que tenemos todos los ingredientes para preparar el scraper, debemos hacer una petición GET a la URL de destino para obtener los datos HTML en bruto. Si no estás familiarizado con la herramienta de scraping, te recomiendo que consultes su documentación. Ahora vamos a raspar Yahoo Finance para los datos financieros utilizando la biblioteca de solicitudes como se muestra a continuación.
r = requests.get("https://api.scrapingdog.com/scrape?api_key=<your-api-key>&url=https://finance.yahoo.com/quote/AMZN?p=AMZN&.tsrc=fin-srch").text
esto le proporcionará un código HTML de esa URL de destino.
Ahora, usted tiene que utilizar BeautifulSoup para analizar el HTML.
soup = BeautifulSoup(r,'html.parser')
Ahora, en toda la página, tenemos cuatro etiquetas «tbody». Nos interesan las dos primeras porque actualmente no necesitamos los datos disponibles dentro de las terceras &cuatro etiquetas «tbody».