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.
107 lines
4.1 KiB
107 lines
4.1 KiB
# Sommaire
|
|
1. [Introduction](#intro)
|
|
2. [Installation](#install)
|
|
1. [Linux/Unix/MacOS](#unix)
|
|
2. [Windows](#win)
|
|
3. [Usage](#usage)
|
|
4. [TODO](#todo)
|
|
|
|
<div id='intro'/>
|
|
|
|
# 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.
|
|
|
|
<a href="https://git.plefebvrebjo.fr/p/marseille-perils-webcrawler/raw/branch/main/doc/img/map.jpeg" target="blank"><img src="./doc/img/map.jpeg" width="1024" alt="Carte des périls de Marseille-Centre"></a><br><br>
|
|
|
|
Le code repose sur le projet libre de webcrawler [Scrapy](https://scrapy.org/) é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.
|
|
|
|
|
|
<div id='install'/>
|
|
|
|
# Installation
|
|
|
|
<div id='unix'/>
|
|
|
|
## 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
|
|
|
|
<div id='win'/>
|
|
|
|
## Windows
|
|
|
|
*L'utilisation de Windows est déconseillée.*
|
|
|
|
### Dépendances
|
|
- [Python >= 3.5](https://www.python.org/downloads/windows/)
|
|
- [Microsoft Visual C++ Build-tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/)
|
|
|
|
*Ces modules doivent être installés :*
|
|
|
|
<img src="./doc/img/micrapsoft-visualstudio.jpg" height="320" alt="Screenshot de l'installation des build-tools pour Windows"><br><br>
|
|
|
|
- [Librairie libxml2](https://www.lfd.uci.edu/~gohlke/pythonlibs/#libxml-python) (documentation en haut de page, à priori ça s'installe via pip mais j'ai pas eu besoin, faudrait voir sur un windows vierge ce que ça donne)
|
|
|
|
|
|
### 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
|
|
|
|
<div id='usage'/>
|
|
|
|
# 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](https://docs.scrapy.org/en/latest/topics/feed-exports.html)
|
|
|
|
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 src
|
|
scrapy crawl perils -O perils.csv
|
|
|
|
<div id='todo'/>
|
|
|
|
# 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) |