General

Como hacer Web Scraping con Python y Beautiful Soup

Bienvenidos a esta tercera clase en la que vamos a ver cómo hacer scrapping con Python y Beautiful Soup, que es una librería muy potente para analizar el HTML y extraer los datos que nosotros queremos. Bien, en las clases anteriores hemos visto cómo hacer el scrapping, la extracción con XPath (aquí te dejo el vídeo) y en el siguiente hemos hecho la extracción con expresiones regulares (igualmente te dejo el vídeo aquí arriba).

Bien, pues ahora toca hacer la extracción con Python, un lenguaje de programación muy popular que está siendo cada vez más usado en Deep Learning, Machine Learning, Inteligencia Artificial en general. Y en scrapping pues también tiene un papel bastante importante y una de las librerías que hace muy cómodo el scrapeo es Beautiful Soup.

¿Qué es lo que vamos a necesitar para arrancar? Pues a ver, este es un artículo que tengo escrito en scrapping.link, pero realmente aquí usa tres librerías; pero en realidad, porque exporta todos los datos a un CSV. Este paso no lo vamos a hacer en el vídeo. Si quieres verlo, dejo un enlace de este artículo en la cajita de descripción.

Bien, ¿qué bueno? Empieza con los conceptos básicos del HTML, es un poquito lo que vimos en el primer vídeo; pero bueno, si queréis lo refrescamos. El HTML, básicamente, se engloba todo en una primera etiqueta que se llama HTML, luego hay una parte que es la cabecera (head) que indica el título y luego el cuerpo (body). Esto es lo que nosotros vemos en el navegador: aquí está el h1, los párrafos y el cierre del cuerpo del body. Pero vamos, y bueno, ahí faltaría muchísima etiqueta HTML. Esto es como lo más más básico para entender qué es lo que estamos recorriendo, que es un documento HTML y qué es lo que queremos extraer, que son los campos; por ejemplo, si queremos extraer el atributo y esa etiqueta que tiene id igual a título, pues con el Beautiful Soup veremos que es muy sencillo, al igual que clases, en fin.

La librería que vamos a usar es request para hacer la petición y extraer el HTML en puro, y luego el Beautiful Soup para analizarlo, para hacer ese paseo y extraer lo que nosotros queremos. Para instalar es muy sencillo: usamos el instalador de Python que se llama pip; en este caso yo estoy usando el pip3 para Python versión 3; instalo el request y el Beautiful Soup 4.

Una vez que tenemos instalada esta librería, esta la estoy saltando porque en el ejemplo de hoy, no en el vídeo de ahora, no lo vamos a exportar a un csv. Es muy fácil, pero no lo vamos a hacer. En fin, vamos a hacer esta instalación, yo ya la tengo hecha en mi máquina local. Tengo ya instalada esta librería, entonces, ya me lo que me pondría es abrir un fichero. Vale, vamos a ver, tengo aquí el Visual Studio y me abro el fichero. Lo tengo por aquí bien. Haremos un fichero vacío. Vale, vamos a ir rellenando. Vamos a importar `request`, `from`, ahora `BeautifulSoup` desde `bs4` import `BeautifulSoup`. `BeautifulSoup` se pone con esas dos primeras mayúsculas. Estoy viendo que tengo aquí el ejemplo al lado.

Vale, ¿qué es lo que vamos a hacer ahora? Lo primero que vamos a hacer es sacar todo el HTML para eso hacemos una petición con `request.get` y ponemos la URL. La URL que vamos a usar, pues es la de para escribear. Vale, nuestro entorno de pruebas de web scrapping. Vale, entonces, esta variable mismo tiene ahí la petición. Ha hecho la petición, una petición sencilla `get` para extraer el HTML de esta URL y ahora el HTML lo guarda en `page.txt`. Vale, ahora vamos a ir a crear una variable `soup` para el paseo que estamos haciendo `BeautifulSoup`. Ahora se le mete `page.txt`, que este es el HTML puro de esta web. Vale y le vamos a decir qué tipo de paseo vamos a hacer, es un `lxml`; le vamos a pasar el HTML parser.

Vale, entonces ahora este es el primer paso. Ahora, ¿qué es lo que queremos? ¿Cómo vamos a ir al HTML a ver el código fuente? Cierro este, volvemos `Ctrl` + `U`. Vale, la URL que queremos, inspeccionar el código fuente. Cada frase, yo estoy viendo estos bloques de frases; cada uno de estos está metido dentro de un `div`. Vale, pues lo primero que voy a hacer es sacar todos los `div` y que me lo saquen y lo pongan en un array, para luego recorrer todo ese array, esta primera extracción. Entonces, venimos al código de Python y, ¿qué hacemos? `divs = soup.find_all(‘div’)`. Estoy creando la variable `soup` que ahora vamos a usar, esta librería para el tema del paseo, `.find_all`, y que va a buscar todos, pues, la etiqueta `div`. Y ahora hacemos un `for div in divs`, esta array `items` se ha creado al mismo, un array. Vale, en `items` se ha creado un array con todos los HTML de `div`. Vale, a su vez, dentro de cada uno de estos que está aquí, estamos recorriendo, vale, cada item de estos se le puede aplicar el las funciones de `soup`.

Vale, vamos a hacer ahora, yo quiero extraer la, lo que es la frase, quiero extraer en la categoría y quiero extraer el autor. Vale, son muy fáciles de hacer. Vamos aquí abrir de nuevo. Voy a ponérmelo aquí, para que lo veáis: este es el HTML, y luego me lo voy a poner aquí. Luego, lo borraré. ¡Vale! Esto está mal puesto, pero para que veáis. Simplemente, yo pongo: «autor = blogcouté.find()». Que me tiene que buscar, por los que sea, la clase «autor». Le digo «class=class» y un «bajo» igual a «author». ¡Vale! Que es como yo he llamado a la clase «autor». Pues, esto es lo que me está cogiendo dentro de este del blogcouté. De cada frase me está cogiendo este, este texto dentro. Lo que viene dentro de la clase «autor», bien; o sea, el texto, y me lo está guardando en la variable «autor». La siguiente que vamos a sacar, vamos a sacar «categoría». Categoría, pues, está con la clase «categoría», cat. Voy a copiar y pegar arriba, y por último, vamos a sacar la frase que está en un «q». Que simplemente: «frase = blogcouté.find(html q).text». Bien, pues, ahora, para probar que funciona todo esto, vamos a hacer un «print» aquí de las tres variables: «autor», «categoría» y «frase». Y si no me li… ¡Ahora borramos esto! Porque simplemente lo he puesto para que veáis dónde estaba cada cosa y cómo se llamaba cada clase. Lo borro, y ahora sí, no, no, no, ha ido bien. Yo, ahora mismo, ejecutó el Python 3, y este fichero que he llamado «beautifulshop.pp». ¡Beautiful shop! Pues, no me está importando aquí. Lo he escrito mal. ¡Vales! Que he puesto «forma es fron». Lo ejecutamos, y aquí tenemos ya sí: aquí tenemos todas las frases. ¡Vale! Que sería el «autor», «categoría» y la «frase». Autor, categoría y frase. Y bueno, hemos visto un ejemplo muy sencillo para escribir. ¡Fijaos! Me ha salido 13. ¡Bueno! Me ha salido muy poquita en líneas para hacer un escribir muy chulo que luego puedes utilizar. Lo puedes pasar a un CSV para luego importarlo en otro sitio, en otra aplicación, o guardarle en una base de datos para luego trabajarlo. Pues, en PHP, haré un vídeo muy chulo para hacer para todo lo que estemos escribiendo, montar un post.

Y subirlo a WordPress usando XML-RPC. ¡Vale! Que es un protocolo que con el que podemos subir, que viene ya de manera nativa en WordPress, que podemos subir desde de manera externa con una pin. Podemos subir el contenido nuestro blog, y bueno, el vídeo de aquí ya se ha terminado. En el siguiente vídeo, vamos a ver el renderizado de JavaScript. ¡Vale! Vamos a ver qué hay sitio donde vamos a necesitar tirar de un de la interpretación del JavaScript para poder leer el contenido. Y bueno, espero que os haya gustado.

También te puede interesar

Ir arriba