Un webcrawler basé sur Scrapy pour extraire les arrêtés de péril du site de la ville de Marseille
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
p b2d298108f
explications structure et code
3 years ago
crawler rename 3 years ago
doc/img doc : ajout carte jpg 3 years ago
.gitignore suprression fichiers locaux uploadés par erreur 3 years ago
LICENSE Initial commit 3 years ago
README.md explications structure et code 3 years ago

README.md

Sommaire

  1. Introduction
  2. Installation
    1. Linux/Unix/MacOS
    2. Windows
  3. Usage
  4. TODO

Un webcrawler pour extraire les arrêtés de péril du site de Marseille

Les données sont inscrites manuellement sur le site de la mairie, et présentent de nombreux problèmes de structure et de nomemclature qui empêchent d'extraire proprement chaque arrêté.

On a donc recours à plusieurs regex successifs pour séparer les adresses et obtenir une table structurée. Certaines adresses sont perdues en chemin (environ une cinquantaine) mais l'essentiel est extrait.

Les données sont ensuite classées par type (périls & périls imminents, main-levées, interdictions d'occupation, etc.).

Il est ensuite possible d'en éditer une carte, sur Qgis par exemple, en retrouvant chaque adresse par geocoding.

Carte des périls de Marseille-Centre

Le code repose sur le projet libre de webcrawler Scrapy écrit en python.

Structure :

  • crawler/perils/spiders/scraperil.py : Le crawler initial qui récupère toutes les données brutes du site par des requêtes via sélecteurs XPATH (similaires aux selecteurs CSS mais plus polyvalents)

  • crawler/perils/items.py : Les items dans lesquels sont inscrites les données brutes

  • crawler/perils/splittermidware.py : La pipeline de tri des données brutes au moyen de regex et d'un peu de python rudimentaire. Le code est commenté pour inspection.

Installation

Linux/Unix/MacOs

Dépendances

  • Python >=3.5

Environnement virtuel et modules python

Environnement virtuel

Mise en place d'un environnement virtuel pour scrapy dans lequel seront installées les dépendances :

    python -m venv scrapy-env
    source scrapy-env/bin/activate

Modules

    python -m pip install --upgrade pip
    python -m pip install regex
    python -m pip install scrapy

Windows

Dépendances

Environnement virtuel et modules python

Environnement virtuel

Mise en place d'un environnement virtuel pour scrapy dans lequel seront installées les dépendances :

    python -m venv scrapy-env
    scrapy-env\Scripts\activate.bat

Modules

    python -m pip install --upgrade pip
    python -m pip install regex
    python -m pip install scrapy

Usage

On exporte l'output du crawler dans un fichier csv.

D'autres formats sont disponibles (json, xml, etc.) plus d'informations sur la documentation de scrapy

    cd src
    scrapy crawl perils -O perils.csv

TODO

  • Permettre la possibilité de deux outputs : un csv pour Qgis et un csv pour consultation et mise en page. Pour le moment les deux sortent sur un même csv parce-que j'ai pas pris le temps de m'en occuper.
  • installer ça sur un serveur et faire crawler quotidiennement puis mettre sur une base de données (mariadb)