3.3 KiB
30 Días de Python: Día 22 - Web scraping
📘 Día 22
Web scraping con Python
¿Qué es el web scraping?
Internet está lleno de datos que pueden utilizarse para distintos fines. Para recopilar esos datos necesitamos saber cómo extraerlos de sitios web.
El web scraping es el proceso de extraer y recopilar datos de sitios web y almacenarlos en una máquina local o en una base de datos.
En esta sección usaremos los paquetes requests y BeautifulSoup (versión 4).
Para empezar necesitas requests,beautifulsoup4 y un sitio web:
pip install requests
pip install beautifulsoup4
Para hacer scraping necesitas conocimientos básicos de etiquetas HTML y selectores CSS. Usamos etiquetas HTML,clases y/o IDs para localizar contenido en la página. Importemos requests y BeautifulSoup:
import requests
from bs4 import BeautifulSoup
Declaremos una variable url con el sitio que queremos scrapear:
import requests
from bs4 import BeautifulSoup
url = 'https://archive.ics.uci.edu/ml/datasets.php'
# Usamos requests.get para obtener datos de la URL
response = requests.get(url)
# Comprobar el estado
status = response.status_code
print(status) # 200 indica éxito
200
Parsear el contenido con BeautifulSoup:
import requests
from bs4 import BeautifulSoup
url = 'https://archive.ics.uci.edu/ml/datasets.php'
response = requests.get(url)
content = response.content # obtenemos todo el contenido del sitio
soup = BeautifulSoup(content, 'html.parser') # BeautifulSoup nos permite parsear el HTML
print(soup.title) # <title>UCI Machine Learning Repository: Data Sets</title>
print(soup.title.get_text()) # UCI Machine Learning Repository: Data Sets
print(soup.body) # muestra el cuerpo completo de la página
print(response.status_code)
tables = soup.find_all('table', {'cellpadding':'3'})
# Localizamos tablas cuyo atributo cellpadding tenga el valor 3
# Podemos usar id, class o etiquetas HTML para seleccionar elementos; consulta la documentación de BeautifulSoup para más información
table = tables[0] # el resultado es una lista; tomamos el primer elemento
for td in table.find('tr').find_all('td'):
print(td.text)
Si ejecutas este código verás que la extracción está incompleta.Puedes continuar para completarla,ya que forma parte del ejercicio 1. Consulta la documentación de BeautifulSoup para más detalles: https://www.crummy.com/software/BeautifulSoup/bs4/doc/#quick-start
🌕 Vas por muy buen camino.Solo te faltan ocho días para alcanzar una meta impresionante.Ahora haz los ejercicios para practicar.
💻 Ejercicios: Día 22
- Raspa el siguiente sitio y guarda los datos como un archivo JSON (url = 'http://www.bu.edu/president/boston-university-facts-stats/').
- Extrae las tablas de esta URL (https://archive.ics.uci.edu/ml/datasets.php) y conviértelas a un archivo JSON.
- Raspa la tabla de presidentes y guarda los datos como JSON (https://en.wikipedia.org/wiki/List_of_presidents_of_the_United_States).Esta tabla no está muy bien estructurada,por lo que la extracción puede llevar tiempo.
🎉 ¡Felicidades!🎉