Coding session 11 : Scraping du site lesilesdeguadeloupe.com

  • Modifié il y à2 mois 
  • Temps de lecture :3Minutes

Intro

Je suis tombé sur un nouveau candidat pour explorer les possibilités du scraping. C’est un site de type annuaire listant des hébergements en location, des activités et des restaurants en Guadeloupe.

Lire l’article les étapes pour le scraping de site internet de type annuaire.

Étape 1 : récupérer les URLs des pages

Les informations qui m’intéressent sur le site lesilesdeguadeloupe.com. Le nom, l’adresse, le numéro de téléphone, l’adresse mail, la description de ces 3 domaines :

  • Hébergements
  • Activités
  • Restaurants

S’il existe une page qui liste l’ensemble des pages d’hébergements, l’ensemble des pages activités et l’ensemble des pages de restaurant le travail sera facilité. Surtout, si il n’y a pas de pagination.

Dans un premier temps, je vérifie si une API est appelée par le Frontend, pour récupérer la liste des pages, il n’y en a pas, ce sont des pages qui sont générés sur le serveur.

Pas D’API ! Mais nous avons une information importante, le nombre total d’éléments est affiché sur la page, pour les hébergements, nous savons qu’il y a 881 éléments répertoriés sur le site. 502 activités et 301 restaurants. Cela nous donne une idée précise du nombre de pages au total à parcourir.

Les hébergeurs

Il y a 10 éléments par pages, on pourrait créer un script pour parcourir une page, ensuite passer à la suivante pour récupérer l’ensemble des URLs. Mais il y a une méthode plus simple avec un tableau Excel ou Google Sheets.

Récupérer l’URL de la premiere page https://www.lesilesdeguadeloupe.com/tourisme/fr-fr/hebergements?page=1 et générer les URLs suivantes dans Excel.

Une fois notre fichier CSV contenant la liste des pages paginées établis, on récupère les liens vers les pages de détails de l’hébergement.

Sur chaque page, on exécutera le code JavaScript suivant, il récupère les URLs des pages de chaque hébergement :

let results = [...document.querySelectorAll('[itemprop="url"]')].map(e=>e.href)

Étape 2 : récupérer les informations

Le numéro de téléphone et l’adresse mail s’affichent lorsque l’on clique sur le bouton “réserver”. Ce bouton est présent dans les pages des hébergements des restaurants, et des activités. Si les classes CSS utilisées sont les mêmes on pourra utiliser le même code d’extraction des informations. Cependant ce bouton n’apparaît que sur mobile, sur ordinateur les données sont affichés par défaut.

Le code pour extraire les données :

let name = '';
let address = '';
let tel  = '';
let mail  = ''; 

let nameTag = document.querySelector('.offer-recap-selection-partner-name')
if(nameTag) name = nameTag.textContent;
let addressTag = document.querySelector('.offer-recap-selection-partner-address')
if(addressTag) address = addressTag.textContent;
let telTag = document.querySelector('.offer-recap-selection-partner-tel')
if(telTag) tel = telTag.textContent;
let mailTag = document.querySelector('.offer-recap-selection-partner-email')
if(mailTag) mail = mailTag.textContent;
// name.replace(/\\s/g, '');
// address.replace(/\\s/g, '');
tel.replace(/\\s/g, '');
mail.replace(/\\s/g, '');

Les mêmes classes CSS sont utilisées dans les pages hébergements, activités, restaurants. Le code d’extraction peut donc être réutilisé.

Étape 3 : récupérer les adresses mails des utilisateurs

S’il s’agit d’un site WordPress, on peut extraire les adresses mails des utilisateurs via l’API REST.

Mais visiblement, le site tourne avec ASP.NET. J’arrête mes investigations ici.

Laisser un commentaire