Comment scraper toutes les annonces de chalets en Savoie sur Leboncoin avec Python 3 et Scrapy

Arrêtez de copier le net. Scrapez le.

 

Comment scraper toutes les annonces de chalets en Savoie sur Leboncoin avec Python 3 et Scrapy

Pendant que nous écrivons cet article, le froid s’est abattu sur la France toute entière, sous l’effet d’un mystérieux canal Moscou-Paris. Il est peut-être temps de soigner le mal par le mal, et de se rendre aux sports d’hiver, en Savoie ! terre de ski alpin et de repas ultra-caloriques. Dans cet article nous allons vous montrer comment scraper, grâce à un script Python et la librairie de Web Scraping Scrapy toutes les annonces à ce jour, pendant que nous écrivons cet article. De quoi se trouver une belle place au bas des pistes, un verre de vin chaud en main.

Installer Scrapy sur Mac OS

Voilà les étapes à suivre:

  • Installer Python et pip sur Mac OS. Pour ça, on vous laisse consulter notre article précédent. Juste là.
  • Ouvrez votre commande.

  • Installer Scrapy. C’est une librairie de scripts python spécialisée dans le Web Crawling et le Data Scraping, ou en Français, de « robots d’indexation ». Il suffit de rentrer dans votre terminal le texte suivant, et d’appuyer sur la touche entrée:

Et voilà, Scrapy et sa librairie de scripts sont maintenant disponibles.

Créer un projet

La première étape consiste à créer un « projet », c’est à dire un dossier, qui va contenir tous les scripts que nous allons utiliser. Nota Bene : un script et un document texte, qui indique, en utilisant un langage ou un autre, une série d’action que l’ordinateur va interpréter. Ce sont donc de tout petit fichier texte, maniable, et ma foi, sympathique.

Il va falloir rentrer dans votre commande le texte suivant, et appuyer sur la touche entrée :

Un répertoire va être créé, avec à l’intérieur un ensemble de fichiers. Tous ces fichiers contiennent des fonctions pré-construites, auxquels nous allons faire appel lors de la création de notre script. Inutile toutefois de comprendre le fonctionnement de chaque fichier.

Télécharger l’éditeur de scripts Sublime Text

Pour cette partie là, nous vous dirigeons vers notre article précédent. Tout y est expliqué en détail : https://lobstr.io/index.php/2018/02/12/comment-pourquoi-installer-sublim-text/

Trouver l’url de départ

Afin de récolter les données d’un site web, il faut commencer par l’url initial, ou « url de départ », qui permet d’accéder à l’ensemble des annonces concernant un sujet. Ici, nous allons chercher l’url de départ du site leboncoin, qui recense l’ensemble des annonces de chalets en Savoie, notre cible.

Nous allons taper avec le moteur de recherche Google, les mots clés suivants : chalets ski leboncoin

En cliquant sur le premier lien, on arrive sur la page recherchée, la liste des gites en Corrèze présents sur leboncoin.fr, accessible via l’url suivant : https://www.leboncoin.fr/locations_gites/offres/rhone_alpes/savoie/

Inspecter la page

Avant scraper une page web à l’aide du package Scrapy , il faut identifier les éléments que l’on souhaite extraire. Il existe plusieurs façons d’identifier les éléments sur une page web, mais la méthode suivante est celle qui nous semble le plus à suivre pour commencer : identifier les éléments à partir de leur classe/id CSS. Pour plus d’informations concernant le langage CSS, vous pouvez vous rendre ici : https://www.w3schools.com/css/

Pour trouver les éléments à partir du code CSS de la page, il faut faire un clic droit, puis sélectionner « Inspecter ».

Afin de faciliter l’inspection, il faut ensuite cliquer sur l’icône de pointeur de souris en bas à gauche. Nous allons pouvoir identifier la classe CSS des éléments, en passant simplement la souris dessus.

Identifier les éléments à extraire

Afin d’avoir une liste exhaustive qui facilitera notre choix de chalet, nous allons chercher à extraire plusieurs éléments : le titre, l’url de l’annonce, le prix, le lieu et la date de publication. Nous souhaitons réaliser cette action pour chaque annonce de la page.

En premier lieu, nous allons cherché la classe CSS de l’annonce en elle-même. En passant la souris sur l’élément, on obtient la classe suivante, mis en valeur ci-dessous : a.list_item.clearfix.trackable

En reproduisant l’opération sur chaque élément de l’annonce, nous obtenons les classes CSS suivantes :

  • titre : h2.item_title
  • prix : h3.item_price
  • lieu : p.item_supp

Et voilà, nous avons identifié les items de la page qui nous semblent intéressants. Voyons maintenant comment se structure le code.

Le code

Nous allons d’abord créer un fichier .py, c’est à dire le fichier texte qui va contenir l’ensemble de notre code. Pour cela, créer un fichier avec l’extension .py, au sein du dossier spiders de votre projet. Avec l’environnement de développement PyCharm, il suffira de faire un clique droit sur spiders > New > Python File.

Nous allons appeler le fichier chaletsavoielbc.py mais libre à vous de choisir un nom qui vous plaira. Assurez-vous que le fichier est bien dans le document spiders.

Veuillez trouver ci-dessous le code en entier.

NB : la fonction time permet de stopper momentanément l’exécution du script et a été mise là afin que le rendu soit plus visible lors de la prise de vidéo (cf. infra). Cette fonction n’est toutefois pas nécessaire au bon fonctionnement du script.

L’extraction finale

Afin de lancer l’exécution du script, il faut d’abord se déplacer avec la commande vers le document spiders. Si vous êtes l’heureux propriétaire d’un mac, vous devrez utiliser le langage UNIX qui vous permettra de vous déplacer de dossier en dossier. Rien de compliqué, vous pouvez trouver toutes les commandes, site simple de la prestigieuse université de Stanford : http://mally.stanford.edu/~sr/computing/basic-unix.html

Il faut utiliser deux commandes principales : ls qui permet d’afficher les fichiers dans un document, et cd qui permet de se déplacer de document en document.

Il faut ensuite inscrire dans la commande le texte suivant :

Et voilà le résultat.

Les informations sont extraites et présentes au sein de la commande. Pour les extraire au format excel, vous pouvez donc copier/coller les informations depuis la commande.

N’hésitez pas à consulter le code sur notre github, et à nous donner les vos retours ou commentaires : https://gist.github.com/Lobstrio/c83bf0791fdb1f674257765d1fa5dd18

Limites connues

Le fichier ne permet pas de sauver les données dans un fichier au format JSON, ni de passer à la page suivante. Pour aller plus loin, vous pouvez vous rendre sur le site suivant, où vous trouverez des ressources complémentaires : https://docs.scrapy.org/en/latest/.

Si vous avez besoin d’aide pour scraper des milliers de données de façon récurrente et à grande échelle, vous pouvez nous contacter via le formulaire ci-dessous :

Avertissement: Tout code fourni dans nos tutoriels est destiné à des fins d’illustration et d’apprentissage uniquement. Nous ne sommes pas responsables de la façon dont il est utilisé et n’assumons aucune responsabilité pour toute utilisation préjudiciable du code source. La simple présence de ce code sur notre site n’implique pas que nous encourageons le scraping ou l’extraction de données des sites référencés dans le code et le tutoriel qui l’accompagne. Les tutoriels ne font qu’illustrer la technique de programmation des scrapers web pour les sites internet populaires. Nous ne sommes pas obligés de fournir un support pour le code, cependant, si vous ajoutez vos questions dans la section des commentaires, nous pouvons vous y répondre périodiquement.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *