Cómo hacer Web Scraping con Python

Conviértete en un Backend Developer
Domina los lenguajes de programación más demandados. Accede a cursos, talleres y laboratorios para crear proyectos con Java, Python, PHP, Microsoft .NET y más
Comenzar gratis ahora

Web scraping con Python

Para hacer web scraping con Python lo que tenemos que hacer es sustituir lo que hacemos en un navegador web por un programa en Python.

En un navegador lo que hacemos es escribir una URL, lo que hace que se envíe una petición, siguiendo el protocolo HTTP, a un servidor, el cual nos devuelve el código HTML que nuestro navegador consigue interpretar y transformar con ese aspecto visual que vemos en las páginas web.

Con Python podemos hacer exactamente lo mismo, crear programas que generen peticiones al servidor y recibir el código fuente en formato HTML.

Además existen librearías como Beautiful Soup que permiten analizar los HTML y extraer las partes que nos interesen.

En general, un código HTML, el código fuente de una página, contiene muchísima información, de la cual solo nos interesan ciertas partes.

Por ejemplo, podemos extraer los enlaces de una página web, lo que sería un web crawler. Esto se haría detectando este tipo de estructuras de anclaje, marcadas con la etiqueta a, y así podemos extraer los valores de los atributos href.

Práctica de web scraping con Python

Vamos a ver un ejemplo de web scraping con Python.

Lo primero que haremos será utilizar una para abrir una página web y leer el contenido en HTML. Para hacerlo, en nuestro IDE escribimos el siguiente código, indicando la URL de la web que queremos leer:

	import urllib.request
	datos = urllib.request.urlopen(‘https://www.openwebinars.net’).read().decode()

Una vez hecho, la variable datos contendrá todo el HTML de esa web, lo que no nos interesa porque está en bruto. Necesitamos poder extraer las partes que nos interesen, para ello vamos a extraer la librería Beautiful Sup:

import sys
	!{sys.executable} -m pip install beayutifulsoup4

Una vez instalada esta librería, lo que haremos será transformar todo el HTML extraído en un objeto de BeautifulSoup, el cual llamaremos soup. Una vez tenemos ese objeto, vamos a extraer todas las etiquetas de anclaje, que las guardaremos en la variable tags, la cual va a contener todas las etiquetas que tengan hipervínculos, y cada una de ellas las vamos a recorrer con un bucle for e imprimiremos el contenido del atributo href.

from bs4 import BeautifulSoup
soup =  BeautifulSoup(datos)
tags = soup(‘a’)
for tag in tags:
		print(tag.get(‘href’))

Ejecutamos lo anterior y podemos ver que se imprimen todos los enlaces que existen en la web que hemos indicado.

Mejora las habilidades de tus desarrolladores
Acelera la formación tecnológica de tus equipos con OpenWebinars. Desarrolla tu estrategia de atracción, fidelización y crecimiento de tus profesionales con el menor esfuerzo.
Solicitar más información

 

Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información