TUTORIAL Scraping con Python 2: Más ejemplos prácticos

jose

Administrator
Miembro del equipo
Hola a todos, soy Jose y hoy vamos a dar otro ligero repaso por el mundo del Web Scraping utilizando Python y poniendo aún más ejemplos.

Esta es la segunda parte del post "Scraping con Python", si quieres ver la primera puedes hacerlo aquí:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

El objetivo de esta segunda parte y lo que espero, es que al final de esta guía, te sientas lo suficientemente confiado para lanzarte a crear tus propios proyectos de Web Scraping. ¡Vamos a ello!

Instalación de las herramientas necesarias​

Lo primero que debemos hacer es asegurarnos de tener Python instalado en nuestra máquina. Si aún no lo has hecho, puedes descargarlo desde el
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.
.

Además, vamos a necesitar instalar algunas bibliotecas. Para ello, abrimos una terminal y tecleamos los siguientes comandos:

Python:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

Realizando una solicitud​

El primer paso para hacer Web Scraping es realizar una solicitud a la página web de la que queremos extraer información. Esto se puede hacer con la biblioteca requests de Python de la siguiente manera:

Python:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

Con esto, hemos enviado una solicitud GET a '
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.
', y la respuesta se ha guardado en la variable 'response'.

Extrayendo información con BeautifulSoup​

Una vez que tenemos la respuesta de la página web, podemos usar BeautifulSoup para extraer la información que nos interesa. Veamos un ejemplo:

Python:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

En este código, estamos extrayendo todos los enlaces de la página web.

Navegando por la estructura de la página​

Es fundamental entender cómo está estructurada la página web desde la cual deseas raspar los datos. Esto te ayudará a identificar las etiquetas que contienen los datos que te interesan. Puedes utilizar las herramientas para desarrolladores de tu navegador para inspeccionar la página.

Manejando la paginación​

Es posible que quieras raspar datos de múltiples páginas de un sitio web. Para ello, tendrás que gestionar la paginación. Aquí te dejo un ejemplo de cómo hacerlo:

Python:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

En este ejemplo, estamos raspando las primeras 10 páginas de un sitio web.

Gestión de errores​

Cuando realices web scraping, es importante tener en cuenta que pueden surgir problemas como páginas que no existen o que no responden. Por eso, es una buena idea incluir manejo de errores en tu código. Aquí te dejo un ejemplo:

Python:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

Este código intentará realizar una solicitud GET, pero si se produce algún error (como una respuesta 404 o 500, o si la solicitud tarda más de 5 segundos), se lanzará una excepción y se imprimirá el error.

Extrayendo texto de párrafos​

A menudo, querrás extraer texto de un párrafo. Aquí tienes un ejemplo práctico de cómo hacerlo con BeautifulSoup:

Python:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

Este código busca todos los párrafos en la página web y luego imprime el texto de cada uno.

Buscando elementos con una clase específica​

A veces, la información que necesitas está contenida en elementos con una clase específica. Por ejemplo, puedes extraer todas las publicaciones de un blog de la siguiente manera:

Python:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

En este caso, estamos buscando todos los divs con la clase 'publicacion', luego extraemos e imprimimos el título y el contenido de cada publicación.

Extrayendo imágenes​

Si deseas extraer imágenes de una página web, puedes hacerlo de la siguiente manera:

Python:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

Este código busca todas las imágenes en la página web e imprime la URL de cada una.

Web Scraping con autenticación​

Algunos sitios web requieren autenticación. En ese caso, puedes usar la biblioteca 'requests' para iniciar sesión en el sitio web antes de raspar los datos:

Python:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

En este ejemplo, iniciamos una sesión y enviamos una solicitud POST con nuestros datos de inicio de sesión. Luego, con la sesión iniciada, realizamos una solicitud GET a la página privada.

Recuerda que cada sitio web puede manejar la autenticación de una manera diferente, por lo que es posible que debas adaptar este código a tus necesidades específicas.

Usando Scrapy para Web Scraping​

Scrapy es una biblioteca de Python muy potente que permite realizar Web Scraping de forma más eficiente y con muchas más funcionalidades que BeautifulSoup. A continuación, te dejo un ejemplo de cómo se vería un spider de Scrapy:

Python:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

En este ejemplo, raspamos todos los enlaces en la página y seguimos los enlaces a las páginas siguientes.

Recuerda que Scrapy es una biblioteca muy potente y, por lo tanto, requiere un aprendizaje un poco más complejo. Te recomiendo que explores su documentación oficial para conocer todas las posibilidades que ofrece.

Extrayendo datos de una tabla​

En algunas ocasiones, es posible que quieras extraer información de una tabla presente en una página web. Aquí tienes un ejemplo de cómo hacerlo:

Python:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

Este código busca la primera tabla en la página web y luego imprime el texto de cada celda de cada fila de la tabla.

Extrayendo datos de un formulario​

En algunos casos, querrás enviar datos a través de un formulario y luego extraer la respuesta. Aquí tienes un ejemplo de cómo hacerlo con la biblioteca 'requests':

Python:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

Este código envía los datos del formulario a '
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.
' y luego parsea la respuesta con BeautifulSoup.

Extrayendo emails del HTML de la web​

En la web, los correos electrónicos se encuentran comúnmente en formato de texto, por lo que puedes utilizar expresiones regulares para encontrar estos patrones en el HTML. Python tiene una biblioteca integrada para trabajar con expresiones regulares llamada re.

Python:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

Este script buscará y mostrará todas las direcciones de correo electrónico encontradas en el HTML de la página web.

Ten en cuenta que es posible que algunas páginas web utilicen diversas técnicas para ocultar o codificar las direcciones de correo electrónico para evitar este tipo de scraping.

Extrayendo datos de un JSON incrustado​

Algunas páginas web incrustan datos en formato JSON dentro de sus etiquetas de script. Aquí te dejo un ejemplo de cómo extraer esos datos:

Python:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

Este código busca la primera etiqueta de script que contenga un JSON y luego carga y imprime los datos.

Este ha sido solo un rápido recorrido por el Web Scraping con Python. Hay mucho más que aprender, pero espero que esta guía práctica te haya dado una buena base sobre la cual construir. Si tienes alguna pregunta, por favor, deja un comentario aquí. Y si te ha gustado esta guía, no olvides darle a "like". ¡Hasta la próxima!
 
Volver
Arriba