Aporte: Web scraping con python BeautifulSoup y MySql. - Versión para impresión +- ChuJALT (https://chujalt.com) +-- Foro: LENGUAJES PROGRAMACIÓN (https://chujalt.com/forum-18.html) +--- Foro: Python (https://chujalt.com/forum-19.html) +--- Tema: Aporte: Web scraping con python BeautifulSoup y MySql. (/thread-20.html) |
Web scraping con python BeautifulSoup y MySql. - chujalt - 07-03-2021 Saludos. Vamos a recoger los datos que nos interesan de una página web y los vamos a meter en una base de datos MySql para su almacenamiento y posteriormente tratar esos datos como mas nos convenga. Yo trabajo en entorno linux, pero bajo Windows o MAc debería funcionar igual. Para poder realizar este trabajo necesitaremos tener instalado MySql en nuestro PC. Además, entre otras librerías tenemos que tener instalada la de BeautifulSoup y el conector a la base de datos MySql Código: sudo pip install beautifulsoup4 En este ejemplo vamos a trabajar con la página de la Bolsa de Madrid, si la quieres ver PULSA AQUI, concretamente en la sección donde nos da la información de las cotizaciones de las empresas del Ibex 35. Esta información se actualiza cada 15 minutos, pero nosotros vamos a ejecutar nuestro script a la hora de cierre para saber como han cerrado las cotizaciones día por día. Yo he creado una base de datos llamada "ibex35" con una tabla llamada "diario" y en esta tabla 9 campos, id, nombre, fecha, ultimo, diferencia, max, min, volumen y efectivo. Voy a poner el script completo y luego comentaremos por bloques. Código: #!/usr/bin/env python BLOQUE 1 Código: #!/usr/bin/env python En este bloque cargamos todas las librerías necesarias, cargamos la página y metemos en una variable la tabla que nos interesa, concretamente la que tiene id = ctl00_Contenido_tblAcciones. BLOQUE 2 Código: rows = soup.findAll("tr")[1:] En este bloque con todos los datos almacenados de la tabla creamos un json con la estructura cabecera tabla / valor, eso por cada fila de la tabla. BLOQUE 3 Código: diccionario = [ En este bloque lo primero que hacemos, como la página web tiene acentos y python no es amigo de ellos, ha escrito símbolos raros en las palabras que tenían acentos, cambiamos esos símbolos por las sílabas pero sin los acentos. Volvemos a cargar en json, conectamos con la base de datos y hacemos un bucle for para hacer insert por cada fila de la tabla. Nótese que debemos de hacer varios "replace" pues la información de la página nos da los miles en puntos y los decimales con comas, cosa que no admite la base de datos mysql, por lo que quitamos los puntos y las comas las transformamos en puntos. También transformamos el campo fecha en tipo "date". Bueno, ya está, espero que le sirva a alguien. Saludos. RE: Web scraping con python BeautifulSoup y MySql. - blackcatiswhite - 12-09-2023 Hola, Me parece fascinante y me gustaría aprender. Tengo una duda, cómo creas el ecosistema? Lo haces con scrapy o directamente desde los comandos de tu ordenador o desde Anaconda Prompt? Te agradecería mucho que me iluminaras. Un saludo! RE: Web scraping con python BeautifulSoup y MySql. - chujalt - 12-09-2023 No, todo en un script de python y configuramos cron para que se ejecute el script una vez al día a la hora de cierre de la bolsa. Ahora el script creo que no funciona porque cambiaron el formato de la página y busca la tabla 'id':'ctl00_Contenido_tblAcciones' que creo que ya no se llama así. |