Web scraping / scrapping

Job ID: 30681450

Budget: €30 – €250 EUR

Dans le cadre du développement d'un logiciel, nous sommes amenés à récupérer de manière automatisée (scraping) l'ensemble des pdf disponibles sur des sites Internet institutionnels fournissant des données publiques. Cependant, la diversité des sites visités fait que, dans certains cas, nous manquons une partie des documents. Un diagnostic nous a permis d'identifier ces ratés et nous souhaitons les corriger.

A ce stade, nous ne disposons pas d'une typologie précise de la cause de ces échecs. Nous savons que sur certains sites, les pdf ne sont accessibles que via un moteur de recherche. Dans d'autres cas, il est possible que le site concerné soit une "Single Page application", que notre scraper ne prend pas bien en compte.

L'objectif de la mission est double. D'une part, il s'agit de récupérer l'ensemble des pdf disponibles sur les sites qu'on vous aura spécifiés et, d'autre part, nous fournir le code que vous avez utilisé pour effectuer cette récupération. Nous l'intègrerons alors à notre base de code pour pouvoir effectuer une veille sur les sites concernés.

D'un point de vue pratique, les choses se dérouleront de la manière suivante :
- Lorsque nous avons votre email, nous vous ajoutons comme contributeurs au dépôt de code qui contient le code de notre scraper (https://bitbucket.org/projetlmp/crawler-worker-externe/src/master/).
- Vous pouvez alors cloner le dépôt. Il est exécutable en local, et vous pouvez ainsi tester le scrapper directement sur votre machine. Le README.md fourni une explication détaillée de comment faire. Vous pourrez ainsi tester, sur le site sur lequel vous devez effectuer des corrections, comment se comporte la version actuelle du scraper et observer l'output dans les fichiers (visited_urls.txt, et output_urls.txt).
- Vous pouvez alors créer une branche, avec le nom scrapper_NOM_COLLECTIVITE, sur laquelle vous allez pouvoir effectuer votre contribution. En pratique, ces contributions doivent être limitées à deux fichiers :
o api/helpers/spiders/custom/nom_collectivité.py => fichier que vous devez créer qui contiendra la custom_spider permettant de scrapper la collectivité concernées.
o api/helpers/spiders/custom/__init__.py => dans lequel il faut ajouter votre custom_spider.
- Vous pouvez refaire tourner le scrapper sur la collectivité concernée, et extraire d’output_urls.txt les documents trouvés. Cela vous permettra de voir si vous en avez plus.
- Quand vous pensez avoir fini :
o Ouvrez une Pull Request de votre branche sur develop
o Envoyez par email la liste de document que le scrapper récupère désormais sur la collectivité concernée, suite à vos modifications.

Il faut maîtriser Python, le package Scrapy et également Git.

Comme nous ignorons les causes exactes des problèmes, nous ne savons pas combien de temps cela vous prendra pour les régler. C'est pour cela que nous souhaitons vous engager pour une journée de travail. Nous vous soumettrons suffisamment d'URL problématiques pour remplir votre journée. Le nombre de cas que vous aurez traités nous servira de référence pour renouveler la mission selon des modalités restant à préciser.

En effet, nous estimons le nombre total de sites à corriger à plusieurs centaines. S'il s'avère que cette mission est un succès, elle pourra donc déboucher sur de nombreuses autres. Cela doit vous conduire à envisager cette journée de travail pour nous (et le coût d'entrée qu'elle représente) comme un investissement pour la suite (sous réserve bien entendu que vous souhaitiez renouveler ce type de missions).

Nous espérons que cette mission marquera le début d'une longue et fructueuse collaboration avec nous !
Related categories: Python Web Scraping Git Scrapy Data Scraping