Scraping d'une map cachée

Salut à tous,

Je galère sur un scraping un peu spécial (en tout cas pour moi).

Je me retrouve sur ce site web : https://www.wine-searcher.com/biz?bs=rabw

Je cherche donc à extraire toutes les infos de ce site sur les différentes catégories : broker, producer, etc, etc.
Le souci, c’est qu’on accède à une liste de 40 lignes par zone sélectionnée.

Évidemment, ces informations sont stockées quelque part, et si je ne me trompe pas, il utilise l’API de Google Maps.

Je cherche surtout à comprendre comment scraper ce site pour avoir la méthode, si certains seraient chauds de m’aider, ça serait super :slight_smile:
Merci par avance :slight_smile:

google map n’est utilisé que pour le géoréférencement (nom de lieu → lat/lon) ensuite ce sont des requetes un peu alambiquées, avec les lat/lon non pas dans les paramètres mais dans les cookies, pour tout scraper faudrait faire varier les paramètres, mais peut être que le site est protégé car il y a des identifiants de session dans les cookies. Google estime à 73000 le nombre de pages « /merchant/ » … bon courage. l y a surement d’autres angles d’attaque mais faudrait passer un peu de temps à analyser le site

1 « J'aime »

Merci, effectivement ca n’a pas l’air si simple que ca
Je creuse toujours

Dans les paramètres de la requête qui alimente la liste, tu as :
search=&start=21&bs=rabw
Donc en incrémentant ce paramètre ‹ start ›, il me semble que tu peux tout (les liens vers chaque page) récupérer…
Peu importe la localisation de départ si tu prends les n suivants jusqu’à ce que tu arrives au bout, tu auras toutes les données.
Ca te permet de récupérer les url de toutes les boutiques et ensuite scrapper les données dans la page de chaque boutique.

Qu’entends-tu par incrémenter ce paramètre ?

Je comprends la logique derrière, mais un peu du mal à saisir le comment surtout :slight_smile:

La requête qui charge les 20 résultats supplémentaires est du genre :

curl "https://www.wine-searcher.com/ajax/ng/biz/merchant-list"
--compressed
-X POST
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0"
-H "Accept: */*"
-H "Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3"
-H "Accept-Encoding: gzip, deflate, br"
-H "Referer: https://www.wine-searcher.com/biz?bs=rabw"
-H "X-CSRF-Token: a_remplir"
-H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8"
-H "X-Requested-With: XMLHttpRequest"
-H "Origin: https://www.wine-searcher.com"
-H "Connection: keep-alive"
-H "Cookie: a_remplir"
-H "Sec-Fetch-Dest: empty"
-H "Sec-Fetch-Mode: cors"
-H "Sec-Fetch-Site: same-origin"
-H "Pragma: no-cache"
-H "Cache-Control: no-cache"
-H "TE: trailers"
--data-raw "search=&start=21&bs=rabw"

Et donc l’idée serait de la faire pour :
search=&start=41
puis search=&start=61
etc…
Et dans les résultats tu peux récupérer tous les liens vers les pages des marchants, du type :
https://www.wine-searcher.com/merchant/xxxxxx
Que tu peux ensuite scrapper…

OK effectivement on rentre dans du codage que je ne vais pas maitrisé ^^

Merci en tout cas pour ta réponse, je creuse le sujet sur cette axe :slight_smile:

Bonsoir,
Effectivement Morph a raison, le mieux serait de passer par l’url AJAX, avec chatgpt facilement possible de faire un script python simple qui fait les requêtes et stock la data, je ne vois aucune sécurité mise en place, si vous avez besoin d’aide n’hésitez pas a venir en privé.