Webscraper et numéro de téléphone caché

Hello à tous,

Petite question, quand je tente d’utiliser webscraper pour aller capter des datas d’annuaires, je bloque sur ce que je dois faire pour sélectionner le numéro de téléphone qui est souvent caché derrière un élément cliquable « Afficher le numéro ».

Exemple ici:
https://annuaire.lefigaro.fr/annuaire/ville/strasbourg-67/acupressure

J’ai:
{"_id":« annuairelefigaro »,« startUrl »:[« https://annuaire.lefigaro.fr/annuaire/ville/strasbourg-67/acupressure"],« selectors »:[{« id »:« link »,« type »:« SelectorLink »,« parentSelectors »:["_root"],« selector »:« a.adp-listingResultHeader__name »,« multiple »:true,« delay »:0},{« id »:« titre »,« type »:« SelectorText »,« parentSelectors »:[« link »],« selector »:« h1 »,« multiple »:false,« regex »:"",« delay »:0},{« id »:« specialite »,« type »:« SelectorText »,« parentSelectors »:[« link »],« selector »:".adp-detailsHeader__info span.adp-skill__label:nth-of-type(1) »,« multiple »:false,« regex »:"",« delay »:0},{« id »:« num »,« type »:« SelectorText »,« parentSelectors »:[« link »],« selector »:« div.is-shown »,« multiple »:false,« regex »:"",« delay »:0},{« id »:« adresse »,« type »:« SelectorText »,« parentSelectors »:[« link »],« selector »:".adpJam span.adp-skill__label",« multiple »:false,« regex »:"",« delay »:0}]}

Cela me donne:

web-scraper-order web-scraper-start-url link link-href titre specialite num adresse
1587927535-10 https://annuaire.lefigaro.fr/annuaire/ville/strasbourg-67/acupressure Delphine vuillemard unternehr https://annuaire.lefigaro.fr/professionnels/U19WVEJYQ1Q Delphine Vuillemard Unternehr sophrologie null 32 all Comtes 67200 Strasbourg
1587927531-8 https://annuaire.lefigaro.fr/annuaire/ville/strasbourg-67/acupressure Sandrine gauthier https://annuaire.lefigaro.fr/professionnels/U15RWENeS1Y Sandrine Gauthier sophrologie null 10 r Gén de Castelnau 67000 Strasbourg
1587927539-12 https://annuaire.lefigaro.fr/annuaire/ville/strasbourg-67/acupressure Thomas hartmann https://annuaire.lefigaro.fr/professionnels/U1FWUkNbRlc Thomas Hartmann naturopathie null 9 av Racine 67200 Strasbourg
1587927533-9 https://annuaire.lefigaro.fr/annuaire/ville/strasbourg-67/acupressure Myriam munch https://annuaire.lefigaro.fr/professionnels/U15VUUVWQFM Myriam Munch psychothérapie (pratiques hors du cadre réglementé) null 20 r Wissembourg 67000 Strasbourg
1587927529-7 https://annuaire.lefigaro.fr/annuaire/ville/strasbourg-67/acupressure Geraldine pour-chauvet https://annuaire.lefigaro.fr/professionnels/U15eUkpWRFg Geraldine Pour-Chauvet kinésiologie null 9 r Marais Vert 67000 Strasbourg
1587927537-11 https://annuaire.lefigaro.fr/annuaire/ville/strasbourg-67/acupressure Anémone de blicquy https://annuaire.lefigaro.fr/professionnels/U11eVUtcQ1k Anémone De Blicquy relaxation null 20 r Wissembourg 67000 Strasbourg

Le téléphone apparait systématiquement comme « null ».

Merci d’avance pour votre aide

Il faut générer un click avant. Regarde du côté du « Element Click Selector » : https://webscraper.io/documentation/selectors/element-click-selector

cc @ScrapingExpert

1 J'aime

Hey,

Te prends pas la tête avec le fait de vouloir cliquer sur le bouton, je pense qu’il faudrait passer outre (pas certain que le clic fonctionne bien sur ce site).

Si on analyse le code source, regardons ce qui se cache derrière la balise « span » qui représente le bouton sur lequel tu tentes de cliquer:

A partir de là, ce que je ferais, c’est configurer un Selector de type ElementAttribute, je sélectionnerais cet élément span, pour en extraire le contenu de son attribut onclick.

Ensuite, quand j’aurais tout extrait, je ferais un rapide script dans la console pour décoder le numéro de tel.

Le numéro crypté est ici:

decodeNumberTel('tel_1', 'MDcgODkgODIgNjIgMDA=');

Pour le décryper, il faut utiliser la fonction atob:

atob("MDcgODkgODIgNjIgMDA=")
"07 89 82 62 00"

Le résultat dans la console:

image

3 J'aimes

Génial, super clair, je te remercie pour ton aide ! Bonne journée,

D

Si tu veux aller encore plus loin:
Tu peux utiliser une solution d’injection de code JavaScript direct à la volée dans les pages du site qui t’intéresse.

De cette manière:

  • Tu injectes le code JavaScript qui va décoder le numéro de tel, et qui l’ajoute dans un attribut que tu nommes comme tu veux au sein de la balise span.
  • Puis tu l’extrait avec WebScraper, comme tu ferais avec n’importe quel autre attribut.

Extension Chrome pour implémenter l’injection de JavaScript:

3 J'aimes

Ca c’est propre comme réponse @ScrapingExpert, merci !

1 J'aime

Merci pour la rapidité et la qualité de la réponse !
Bonne journée !

1 J'aime