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 fa2dcd69d0
Update 'README.md'
2 years ago
crawler nettoyage 3 years ago
doc/img carte 3 years ago
.gitignore suprression fichiers locaux uploadés par erreur 3 years ago
LICENSE Initial commit 3 years ago
README.md Update 'README.md' 2 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 et un peu de code 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 & caméras
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 (Posix compliant)

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

Aux dernières nouvelles, ça fonctionnait. Je ne maintiendrai pas le code pour le rentre compatible avec Windows si d'aventure il venait à y avoir des incompatibilités

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

Toujours dans l'environnement virtuel scrapy-env (pour toute utilisation non consecutive à l'installation, voir la deuxième ligne de la mise en place de l'environnement dans la section Installation pour réactiver l'environnement virtuel)

    cd crawler
    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 pour pouvoir sourcer les données directement depuis cette base sur Qgis ou autre (et permettre l'utilisation des données à d'autres personnes qui ne souhaitent pas installer ce programme)