# Sommaire 1. [Introduction](#intro) 2. [Installation](#install) 1. [Linux/Unix/MacOS](#unix) 2. [Windows](#win) 3. [Usage](#usage) 4. [TODO](#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

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.
# 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 - [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 :* Screenshot de l'installation des build-tools pour Windows

- [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
# 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) 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)