Web Scraping for Data Analysis in Python: a case study


En esta serie de artículos se cubrirá el proceso completo de Web Scraping y Enriquecimiento para el análisis de datos.

El factor de diferencial que busca este trabajo es profundizar un paso más allá de los habituales “tutoriales en condiciones perfectas”, así como dotarlo de un escenario realista gracias al caso de estudio.

Estructura de los artículos

El proyecto constará de una serie de 5 artículos:

  1. Introducción
  2. Protección contra crawlers
  3. Scraping de datos
  4. Geoencoding
  5. Enriquecimiento

El caso de estudio

Estamos a punto de mudarnos a una nueva cuidad y queremos toda la información posible para decidir qué piso alquilar. Para ello buscamos crear una base de datos con todos los pisos de alquiler disponibles en esa cuidad, y que ésta contenga más información que la que el buscador de la agencia de alquileres nos ofrece.

Esta información:

  • Puede estar presente en la web, pero no ser “consultable” en su sistema de búsqueda: el tipo de calefacción, certificación energética, el tipo de fianza, etc.

  • Puede estar implícita, pero no explícita: el precio por metro cuadrado, dividiendo dos campos explícitos; la localización espacial del piso, infiriéndola a partir de su dirección, etc.

  • Puede no estar disponible en la web, pero podemos obtenerla cruzando datos con la localización espacial: el tipo de zona en función del nivel de la renta o la edad media, la distancia a puntos de interés, etc.

Fuente de datos primaria

Se ha escogido el portal de datos de el Idealista como fuente principal de donde extraer los datos debido a dos motivos: gran cantidad de ofertas en la ciudad de estudio, Zaragoza; y fuertes medidas de seguridad contra crawlers y bots, que pretenden impedir la recolección de información de su portal (y hará este proyecto mucho más interesante).

Por motivos de precaución ante posibles infracciones de términos y condiciones de uso, ni el código completo ni los datos extraídos serán públicamente compartidos.