Scraping HTML

Extracción de datos de páginas web

Motivación

Hay veces que la información no está disponible para descargar en un formato estructurado, como CSV o JSON. En estos casos, es necesario extraer la información de la página web y convertirla a un formato estructurado.

Nota: Es importante revisar la política de uso de la página web para asegurarnos de que no estamos infringiendo ninguna norma.

Acceso a los datos

Accedemos a los datos por selectores de CSS o expresiones XPath.

Para CSS aquí tienes un buen resumen de selectores https://gist.github.com/magicznyleszek/809a69dd05e1d5f12d01

Para XPath aquí tienes un buen resumen de selectores https://devhints.io/xpath

requests-html

requests-html permite acceder a página generadas con JavaScript (SPA por ejemplo). Pero la gestión de los procesos choca con Jupyter.

Echa un vistazo a este ejemplo: https://github.com/lmorillas/curso-python-iot/blob/main/src/scraping-spa.py

Descárgalo y ejecútalo en tu ordenador.

TAREA

Genera un archivo json con los datos de los libros de alguna de las librerías siguientes:

El primer caso es un scraping normal (html estático). El segundo es un scraping de una SPA (Single Page Application).

Un ejemplo del archivo json generado puede ser el siguiente:

[
  {"titulo": "A Light in the Attic",
  "autor": "by Suzanne Collins",
  "precio": "51.77",
  "stock": "true",
  "categoria": "Poetry",
  "imagen": "http://books.toscrape.com/media/cache/fe/72/fe72f0532301ec28892ae79a629a293c.jpg"
  },
  ...
]

Si algún dato no está disponible o no se puede extraer, puedes poner null.

Última modificación September 7, 2023: proyeco (8f2e685)