top of page
  • Foto del escritorEsteban Madrigal

Introducción al web scrapping con Python

¿Qué es el web scraping?


El web scraping es una técnica para extraer información de páginas web de manera automatizada. A través de este proceso se pueden recopilar datos que están disponibles en la web para su posterior uso.


¿Por qué es útil el web scraping?


El web scraping es útil porque nos permite acceder a una gran cantidad de información en línea de manera rápida y eficiente. Por ejemplo, podemos utilizarlo para obtener precios de productos en diferentes sitios web, extraer opiniones de clientes en un sitio de comentarios o recopilar datos de una encuesta en línea.


Ejemplos de aplicaciones prácticas de web scraping con Python:

  • Scraping de precios de productos en diferentes tiendas en línea.

  • Extracción de opiniones de clientes de un sitio de comentario.

  • Recopilación de datos de una encuesta en línea.


Preparación del entorno


Instalación de las librerías necesarias:


Antes de comenzar con el web scraping, debemos instalar las siguientes librerías:

  • Requests: permite enviar solicitudes HTTP y recibir respuestas.

  • BeautifulSoup: permite parsear HTML y XML.

  • Selenium: permite controlar un navegador web para ejecutar JavaScript y manipular elementos dinámicos.

Para instalar estas librerías, abrimos nuestra terminal y escribimos los siguientes comandos:

Configuración de un entorno de desarrollo:


Para escribir código en Python, es necesario tener un entorno de desarrollo. Hay varias opciones disponibles, como IDLE o Jupyter Notebook. En este caso, utilizaremos Jupyter Notebook.


Extracción de datos con Requests


Envío de solicitudes HTTP y recibir respuestas:


Para enviar una solicitud HTTP a una página web, podemos utilizar el método get de la librería requests. La respuesta a esta solicitud se guarda en un objeto de respuesta que podemos manipular para obtener información relevante.


Aquí tenemos un ejemplo de código para enviar una solicitud a la página de Wikipedia:

Podemos verificar el estatus de la respuesta para asegurarnos de que todo haya salido bien:


Una vez que tenemos la respuesta, podemos acceder al contenido HTML con el método content:


Extracción de datos con BeautifulSoup


BeautifulSoup es una librería que nos permite parsear HTML y XML de manera sencilla. Podemos usar diferentes métodos para buscar elementos en el documento y acceder a sus atributos y contenido.


Aquí está un ejemplo de código que utiliza BeautifulSoup para parsear el HTML y buscar todos los elementos p:

Podemos buscar elementos por etiqueta, clase o atributo. Por ejemplo, si queremos buscar un elemento con una clase específica, podemos usar el siguiente código:

También podemos buscar elementos por atributo. Por ejemplo, si queremos buscar un elemento con un atributo "id" específico, podemos usar el siguiente código:

Además de find, podemos usar find_all para buscar todos los elementos que cumplan con ciertos criterios. Por ejemplo, si queremos buscar todos los elementos "p" con una clase específica, podemos usar el siguiente código:

Una vez que hemos encontrado los elementos que nos interesan, podemos acceder a sus atributos y contenido. Por ejemplo, si queremos acceder al atributo "src" de un elemento "img", podemos usar el siguiente código:

También podemos acceder al contenido de un elemento usando el atributo .text. Por ejemplo, si queremos acceder al contenido de un elemento "p", podemos usar el siguiente código:

Con estos ejemplos de código deberías tener una idea de cómo puedes usar BeautifulSoup para parsear HTML y extraer información de una página web.


Web scraping dinámico con Selenium


Selenium es una herramienta que nos permite controlar un navegador web y automatizar tareas en línea. Esto es especialmente útil para el web scraping dinámico, donde la información que queremos extraer solo está disponible después de interactuar con la página, por ejemplo, al hacer clic en un botón o llenar un formulario.


Aquí está un ejemplo de código que usa Selenium para abrir un navegador y acceder a una página web:

Una vez que tenemos acceso a la página, podemos usar los métodos de Selenium para interactuar con ella y extraer información. Por ejemplo, si queremos hacer clic en un botón en una página, primero debemos encontrar el elemento del botón y luego llamar al método click() sobre él. La forma de encontrar un elemento depende de su identificador, que puede ser su ID, clase, nombre, etiqueta, etc.


Por ejemplo, para encontrar un botón con una clase específica, podemos usar el siguiente código:

De manera similar, podemos llenar un formulario en una página web con Selenium, buscando el elemento del formulario y luego enviando valores a sus campos. Por ejemplo, si queremos llenar un formulario con un nombre y un correo electrónico, podemos usar el siguiente código:

En el caso de una tabla dinámica, podemos extraer los datos de las celdas y almacenarlos en una estructura de datos para su posterior análisis. Por ejemplo, si queremos extraer los datos de una tabla con una clase específica, podemos usar el siguiente código:

Es importante mencionar que, al interactuar con una página web con Selenium, es posible que la página tenga un tiempo de carga o de respuesta a las acciones, por lo que es recomendable usar la función WebDriverWait para esperar a que se carguen los elementos antes de interactuar con ellos.


Almacenamiento de datos:


Una vez que hemos extraído los datos que necesitamos, es importante almacenarlos de manera eficiente para su posterior uso. Hay muchos formatos diferentes en los que se pueden guardar los datos, como CSV, JSON, SQL, entre otros. Aquí están algunos ejemplos de código en Python para guardar datos en diferentes formatos:


CSV


JSON


SQL


Además de guardar los datos, también es útil manipularlos y analizarlos.


Uso de Pandas para manipular y analizar los datos extraídos


Pandas es una biblioteca de Python muy popular y útil para manipular y analizar datos. Una vez que hemos extraído los datos con Selenium, podemos cargarlos en un dataframe de Pandas y aplicar diferentes operaciones para limpiar y analizar los datos. Aquí hay un ejemplo de código que muestra cómo crear un dataframe y realizar algunas operaciones básicas:


Consideraciones éticas y legales


Es importante tener en cuenta que el web scraping puede violar los derechos de autor y la privacidad de los usuarios, por lo que es necesario respetar las leyes y las políticas de los sitios web que se están scrappeando. Algunos consejos para evitar problemas incluyen:

  • Leer y respetar los términos y condiciones de los sitios web.

  • No scrapear grandes cantidades de datos en poco tiempo, ya que esto puede ser percibido como un ataque y bloquear la dirección IP.

  • No usar los datos extraídos para fines malintencionados, como el spam o la venta de datos de terceros sin su consentimiento.

Debes tomar en cuenta que el uso indebido del web scraping puede tener consecuencias legales graves, por lo que es recomendable tener un conocimiento profundo de la legislación y las buenas prácticas antes de empezar a scrapear datos.


Conclusiones y recursos adicionales


En esta nueva entrada del blog aprendiste los conceptos básicos del web scraping y pandas en Python. También te mostramos cómo puedes extraer información de una página web, cómo manipular y analizar los datos con Pandas y finalmente cómo respetar las leyes y las buenas prácticas al realizar web scraping.


Si deseas aprender más, puedes explorar nuestro vídeo de YouTube donde hablamos sobre web scrapping con python aplicado a Amazon, el cual te ayudará a poner en práctica estos conocimientos: https://www.youtube.com/watch?v=kSXMpcQbObc&t=1540s

84 visualizaciones0 comentarios
bottom of page