Trouvez le nom ou le numero de telephone à partir d'une adresse

Salut !! Pensez vous qu’il est possible à partir d’une adresse d’un domicile exacte de trouver le numéro de téléphone (portable ou fixe) et le nom associé ?

Je dirais les pages blanches, je rigole même pas, c’est ça le pire…
Pour ma part, il y a trop peu d’informations pour faire un recoupage correct et gagner en précision

Sinon tu tentes l’adresse dans Google et tu vois ce qui ressort :wink:

Yes mais sur une base avec plus d’un millions de ligne d’adresse, j’ai tenté de scrapper les infos trouvées mais je suis facilement bloqué par les pages blanches :sweat_smile:

Oui, je ne suis pas surpris que tu sois bloqué,

D’ailleurs je suis un peu surpris (je suis encore naif…) mais on peut ressortir des listes de particuliers comme si on faisait une recherche sur Google Maps
Du coup, fort à parier qu’il y a la possibilité de s’inspirer de ça :roll_eyes:


https://www.pagesjaunes.fr/carte/particuliers/recherche?quoiqui=&ou=Avenue+de+(nom-de-lavenue-par-exemple)+(nom-de-la-ville)+univers=pagesblanches&idOu=

Il y a aussi https://annuaire.118712.fr/ppart/

1 « J'aime »

Merci beaucoup :slight_smile:

crois moi que sur les pages jaunes tu peux tout prendre !!!
j’ai récupérer des centaines de milliers de numéros de téléphone + nom avec, c’est assez simple, tu dois juste faire des copier/coller la valeur de temps en temps pour ne pas faire bugger google sheet ! mais avec IMPORTXML c’est tout a fait faisable

et bien entendu, le tout sans CLIC sur le bouton « afficher numéro »

Merci de ton retour, ta méthode m’intéresse mais je crois qu’elle est difficilement applicable. Dans les pages jaunes (ou blanches) il est nécessaire de rentrer un nom / un prénom + adresse. Je n’ai pas de nom et prenom… Une idée ?

Je serai curieux de savoir quelle technique tu as utilisé.

Je suis justement sur le sujet, je n’ai pas de budget et j’arrive à scraper en aspirant, mais je me fais bloquer par la limite de requête. Je ne trouve pas de bon proxies pour scraper correctement.

déjà pour commencer, il faut observer comment « pages blanches » construit ses url de reponse aux recherche.

prenons un exemple, je recherche une ou plusieurs personnes à une adresse (ex: 30 avenue des champs élysée, 75008 Paris) l’url sera le suivant :
(https://www.pagesjaunes.fr/pagesblanches/recherche?quoiqui=&ou=30+Avenue+des+Champs+Elysées%2C+Paris+(75008)&univers=pagesblanches&idOu=V07505600159200)

on va maintenant le décomposer pour pouvoir obtenir directement l’url sans avoir à éffectuer la recherche.

  • "https://www.pagesjaunes.fr/pagesblanches/recherche?" c’est la base url pour le resultat.
  • « quoiqui= » qui correspond à le nom recherché.
  • « & » car tu associes (concatene) la recherche d’un nom à un adresse.
  • « ou=30+Avenue+des+Champs+Elys%C3%A9es%2C+Paris+%2875008%29 » qui correspond a l’adresse recherché.
  • « &univers=pagesblanches » signifie que la recherche se fait sur la base « pages blanches » et non « pages jaunes ».
  • « &idOu=V07505600159200 » pour l’id de la recherche, celui ci est impossible a trouver sans la recherche directe, mais par chance tu n’en a pas besoin pour atterir sur la pages recherchée, on peut donc l’éliminer !

maintenant, l’écriture de l’adresse à un format bien précis : adresse, ville (code postal)
il faut donc reformater ton url avec les codes correspondants aux caractère spéciaux, en l’occurance c’est l’encodage UTF-8, que tu retrouves dans le codage html:

  • « + » pour " " (espace)
  • « %C3%A9 » pour « é »
  • « %2C » pour « , »
  • « %28 » pour « ( »
  • « %29 » pour « ) »
    tu as liste complète sur ce site « Apical | Encodage dans l'URL (UTF-8, comme par exemple %20 pour un espace) »
    voila, maintenant tu as reconstruit l’url de ta recherche, parfait !
    si jamais tu ne sais pas comment reconstruire ton url, tu peux utiliser le tableau de l’encodage, pour faire des index(equiv()) afin de matcher ton caractère, puis avec un substitue(), tu remplace les caractères.

une fois ton url construit, tu vas en avoir besoin pour ton « importxml » sur google sheet.

avec cette formule tu récupère tous les noms du resultats
=IMPORTXML(B2;"//a[contains(@class, ‹ bi-denomination ›)]/h3")
explication xpath: je recupere tous les « h3 », contenu dans un « a » qui ont une « class » qui contient le texte « bi-denomination » (si tu inspectes bien le code, c’est le point commun des nom)

avec cette formule tu récupère tous les numeros du resultats
=IMPORTXML(B2;"//div[@class=‹ number-contact txt_sm ›]/span[not(contains(@class, ‹ icon ›))]")
explication xpath: je recupere tous les « span » qui ne contienne pas de « class » avec le texte « icon », contenu dans une « div » qui ont une « class » qui s’appelle exactement « number-contact txt_sm » (si tu inspectes bien le code, c’est le point commun des numéros)

attention ! les xpath sont a adapté selon le code, qui peut etre amené à évoluer selon les sites, selon les pages, selon les datas, etc…
c’est pour cela que la recherche du point commun est importante si l’on veut adapter un xpath pour une utilisation plus large !

et voila ! je crois que tu as de quoi bien avancer !

attention tout de même à ne pas faire trop de importxml simultanement pour ne pas faire crasher tes formules, fais petit par petit, puis tu copies/colles la valeur au fur et a mesure que tu avances dans ton scrap, sinon tu auras des #NA en cascade !!!

j’espere que je t’ai bien aidé, si tu as besoin de plus d’aide [email protected] :v:

2 « J'aime »

Merci Kevin pour ce retour très clair et precis :slight_smile:
Je test ce process très prochainement et je te ferais part de mon retour :wink:

apres avec les 2 formules importxml, je viens de remarquer que tout n’est pas forcément dans l’ordre (nom et numero)

tu peux utiliser cette formule pour avoir tout d’un coup

=IMPORTXML(B2;"//*[@id=‹ listResults ›]/div/ul//li[not(contains(@class, ‹ tag ›))]")

1 « J'aime »