Web scraping

Pamela González
Nowports Tech and Product
4 min readFeb 21, 2020
Foto por Philipp Katzenberger en Unsplash

¿Qué es el web scraping?

Seguramente muchos de nosotros hemos utilizado los comandos CTRL + C y CTRL + V en alguna página web para copiar información a un documento de Word, una hoja de Excel o para guardar una imagen. Algunos no lo saben, pero este proceso se puede realizar de forma automatizada y mucho más rápida empleando herramientas llamadas web scrapers.
También conocidos como crawlers, harvesting, bots, entre otros nombres, el scraping es una técnica en la que, mediante distintas técnicas de software, podemos obtener, procesar y almacenar información a gran escala y en poco tiempo de sitios en Internet.

Pero, ¿cómo funciona?

Los scrapers utilizan la estructura de las páginas web para identificar y almacenar información.

La función que tienen los scrapers es consultar el sitio web de nuestro interés, identificar y extraer los elementos que contienen información relevante para nosotros, sin la necesidad de visitarlo con un navegador web; por lo que la recolección y análisis de la información termina siendo mucho más eficiente que hacerlo de manera manual.

Extracción manual
Web scraping

¿Qué retos existen en el web scraping?

Para hacer scraping, hay distintas variables que debemos de tomar en cuenta.

¿Qué información es relevante y/o confiable?

Verificar la importancia y fiabilidad de la información sirve para evitar recursos que no aporten valor en el futuro.

¿Podemos obtener información mediante una API?

Este tipo de interfaces nos ahorran el tiempo y esfuerzo que invertiríamos en hacer scraping, al brindarnos la información que necesitamos.

Cada sitio web tiene una estructura diferente.

Además, las páginas pueden cambiar de forma inconsistente, incluyendo su código fuente; por lo que es importante monitorear con frecuencia cualquier fallo en nuestros scrapers.

Y, ¿qué información es la que podemos scrapear?

La que sea.

¿O sí?

Cualquier información que se pueda encontrar en una página web es scrapeable, bajo ciertas condiciones.

La información que podemos encontrar en Internet es muy variada, a veces sujeta a términos y condiciones de uso y distribución. Si llegásemos a pasar por alto dichos términos, podríamos meternos en problemas legales.

Actualmente, la legalidad del scraping cuenta con muchas opiniones divididas y las leyes que giran entorno a este tema varían de país en país.

Ahora, un ejemplo práctico

Digamos que estamos viendo en Wikipedia un artículo sobre la actriz Amanda Foreman y queremos almacenar su información de alguna forma, sin tener que recurrir a copiar y pegar manualmente todos los datos que necesitamos.

¡Y este es el script que haría el trabajo por nosotros!

El flujo de trabajo es muy simple:

1. Mandar una llamada que regrese el contenido completo de la página web.2. Buscar las etiquetas en el código fuente.3. Extraer el contenido de dichas etiquetas.

Antes que nada, necesitaremos dos librerías: BeautifulSoup y requests.

from bs4 import BeautifulSoup
import requests

Requests nos ayudará a mandar una llamada al sitio para obtener el código fuente, mientras que BeautifulSoup se encargará de parsearlo y nos facilitará la forma de navegar entre los elementos HTML.

Para el primer paso, la llamada que haremos tendrá la siguiente forma:

response = requests.get('https://es.wikipedia.org/wiki/Amanda_Foreman').contentbody = BeautifulSoup(response, features='html.parser')

Para el segundo y tercer paso, apoyándonos de las herramientas de desarrollador de Google Chrome, podemos visualizar de forma sencilla qué etiquetas HTML son las que tienen el contenido que necesitamos. Para este caso, necesitamos el nombre como encabezado, el subtítulo de “biografía” y los dos párrafos de contenido.

name = body.find('h1').text
header = body.find('h2').text
biography = body.findAll('p')

Y este es el resultado, al imprimir el contenido de cada uno:

Consejos a la hora de scrapear

Por último, les dejo una serie de consejos guía a la hora de decidir si se debe o no scrapear un sitio web.

  1. Utilizar una API si la página cuenta con ese servicio, en lugar de scrapear el sitio.
  2. Respetar los términos y condiciones.
  3. Respetar las reglas de los robots.txt.
  4. No mandar demasiadas peticiones al sitio web en un intervalo pequeño de tiempo.
  5. No publicar información que se obtuvo por scraping sin antes verificar si existe una licencia o en caso de no contar con permiso del dueño de los derechos.
  6. Si dudas en la legalidad de lo que se está haciendo, NO lo intentes, busca asesoría de un experto.

--

--