Scraping page jaune

DindonGenereux48 Messages postés 2 Date d'inscription lundi 15 juillet 2024 Statut Membre Dernière intervention 24 juillet 2024 - Modifié le 24 juil. 2024 à 15:45
mamiemando Messages postés 33410 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 2 décembre 2024 - 24 juil. 2024 à 16:05

Bonjour,


Etant nul en codage je me tourne vers vous. Je souhaiterais scrapper les pages jaunes pour mettre dans un fichier excel les données liées à un métier sur une commune précise. Certains logiciels le font, mais ils font du scraping sur les 30 premiers professionnels. Or je souhaiterais le faire pour plus de 3 000 professionnels.

Merci d'avance pour votre aide

A voir également:

1 réponse

mamiemando Messages postés 33410 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 2 décembre 2024 7 808
Modifié le 24 juil. 2024 à 16:21

Bonjour,

Préliminaires

Avant d'envisager du scrapping, il vaut souvent mieux regarder si le site met une API à disposition. L'avantage, c'est que le ton script restera valide même si la mise en forme du site des pages jaunes évolue. C'est d'autant plus important dans ton cas que si tu veux récupérer des milliers de contacts, ils seront probablement affichés sur plusieurs pages sur le site normal, ce qui rendra le script de scrapping d'autant plus compliqué à écrire.

Ça tombe bien, le site des pages jaunes propose une API utilisable sous ces conditions. Au bas de cette page, tu peux demander un accès (qui à terme, se présentera sous la forme d'un token). Une fois l'accès à l'API demandé, tu peux notamment utiliser la "Find Business API".

Exemple : Dans ton cas, pour chercher les pizzerias à Paris, on peut (sous réserve d'avoir un token) récupérer les résultats via : https://api.pagesjaunes.fr/v1/pros/search?what=pizzeria&where=paris

Implémentation

Pour envoyer une telle requête https en python, le plus simple consiste à utiliser le module requests. Celui-ci s'installe via PIP :

pip install requests

Cet exemple montre comment utiliser requests avec un token. Si tu parviens à l'adapter à ton cas d'usage, tu récupéreras en réponse une chaîne au format JSON et tu pourras facilement la convertir en dictionnaire avec le module json.

Exemple sur une autre API (sans token)

Voici comment convertir un résultat d'API json en un dictionnaire.

import requests
import json
from pprint import pprint

api_url = "https://api.archives-ouvertes.fr/search/"
query = "?fq=authFullName_s:(Dupont)&wt=json"
token = "MY TOKEN"
headers = {
    "Authorization": f"access_token {token}"
}

response = requests.get(api_url + query, headers=headers)
data = json.loads(response.text)["response"]
pprint(data)

Note que dans cet exemple, j'ai laissé à titre indicatif le token (qui est ignoré par l'API). Cependant, sur une API qui en attend, la manière dont on le passe dépend du site web (et normalement, est documentée) :

  • La clé est généralement "Authorization",
  • Le préfixe (ici "access_token") dépend de l'API.

Bonne chance

0