pablo-campillo / brand_car_scraper

A scraper tool that aims at gathering features and pictures of vehicles from www.coches.net in order to develop AI models related with the given domain such as a brand model classifier between others. The tool is developed in the context of a task for the 'Tipología y ciclo de vida de los datos' subject of the Data Science Master at UOC Univeristy.
Apache License 2.0
1 stars 0 forks source link

Práctica 1: Web Scraping

alt text

Descripción

En este repositorio se presenta el material realizado bajo el contexto de la Práctica 1 de la asignatura 'Tipología y Ciclo de Vida de los Datos' del Máster en Ciencia de Datos de la Universitat Oberta de Catalunya.

Durante la misma, se ha desarrollado una herramienta que permite obtener datos sobre anuncios de coches publicados en www.milanuncios.com utilizando técnicas de web scraping haciendo uso del lenguaje de programación Python, su libraría Beautiful Soup y Selenium.

Componentes del equipo

Ficheros

Memoria de la práctica

Se puede leer el fichero PDF https://github.com/pablo-campillo/brand_car_scraper/blob/main/memoria/memoria.pdf

Código

Ya desde la raíz del repositorio se puede ver código, pero la lógica principal se encuentra en https://github.com/pablo-campillo/brand_car_scraper/blob/main/brand_car_scraper/main.py

Conjunto de datos

El conjunto de datos que genera la herramienta se sitúa en un fichero de salida .CSV con las siguientes características:

Se pueden encontrar los datos extraídos a día 6 de Noviembre de 2020 en https://zenodo.org/record/4252636#.X6W7THX0lhE.

Uso de la herramienta

Prerequisitos

Es necesario tener instalado el driver correspondiente a tu navegador para Selenium: https://www.selenium.dev/downloads/, preferiblemente para Google Chrome.

Instalación

Desde el directorio raíz se ha de ejecutar el siguiente comando:

$ python setup.py install

Ejecución

Tal y como se presenta a continuación, se puede ejecutar el script de las siguientes maneras:

Usage: scrap [OPTIONS] OUTPUT_FILE

  This tool scraps list of second hand car ads on https://www.milanuncios.com/coches-de-segunda-mano-en-<province>/?orden=relevance&fromSearch=<page_number> where <region> is the name of a region (province) in Spain (madrid, sevilla, murcia) and <page_number> is an integer greater or equal than 1. By searching for cars by regions we are able to save where they are being sold.

  If no OPTIONS are provided all the pages will be parsed.

  If no region is provided, madrid will be selected by default.

  OUTPUT_FILE a path where the csv file will be stored.

  Examples:
        - For scraping from page 1 to the end, region madrid:
            $ scrap out.csv
        - For scraping from page 1 to 10, region madrid:
            $ scrap --tp 10 out.csv
        - For scraping from page 5 to 10, region madrid:
            $ scrap -fp 5 -tp 10 out.csv
        - For scraping from page 5, region madrid:
            $ scrap -fp 5 out.csv
        - For scraping from page 5 to 10, region murcia:
            $ scrap -fp 5 -tp 10 --region murcia out.csv

  AUTHORS:
      - Pedro Uceda Martinez
      - Pablo Campillo Sánchez

Options:
  --fp INTEGER   First page to be parsed. Default value is 1.
  --tp INTEGER   Last page to be parsed, i.e. until the last page.
  --region TEXT  Region to be parsed e.g. madrid.
  --help         Show this message and exit.

Así, la ejecución del siguiente comando:

$ scrap -fp 5 -tp 10 --region murcia out.csv

Dará lugar a un fichero out.csv con los datos de las páginas 5,6,7,8,9 y 10 del listado de coches de segunda mano a la venta en Murcia.

Entorno de desarrollo

Crear un entorno virtual:

$ python3 -m venv <env_directory> python=3.8

Activar el entorno:

$ source <env_directory>/bin/activate

Instalar las librerías y sus dependencias como referencia al directorio, si fuera necesario:

$ python setup.py develop