Scraping d'un téléphone derrière un élément

Je vous remercie par avance pour le temps que vous m’accorderez !

Pour info, je débute seulement dans le scraping et j’utilise webscraping.io
Pour mes besoins pro, j’ai besoin de scraper le nom & téléphone sur des sites de mandataires en immobilier (Iad, Safti, propriété-privée,…etc…).

Lorsque le téléphone est derrière un élément clickable, je coince pour le récupérer. J’obtiens un fichier avec « Null ».

En ayant fait quelques recherches sur ce forum et sur le site du webscrapping.io. J’ai cru comprendre qu’il était, dans ce cas, plus judicieux d’aller chercher directement le téléphone dans « Element » via un « ElementAttribute » (Webscraper et numéro de téléphone caché - #2 par Camille).
En utilisant le tutoriel (Web Scraper << How to >> video tutorials), je configure mon element attribute, mais il ressort toujours « null ».

J’ai trouvé le téléphone dans le « span », mais je ne peux pas utiliser le « data-content » comme un élément valide apriori…

Le site : Votre mandataire immobilier proche de chez vous
Voici à quoi cela ressemble de mon côté :

{« _id »:« proprietepriveeherault »,« startUrl »:[« Votre mandataire immobilier proche de chez vous - Page NaN em »,« type »:« SelectorText »},{« delay »:0,« id »:« element »,« multiple »:false,« parentSelectors »:[« pages »],« selector »:« #phoneIcon span »,« type »:« SelectorElement »},{« delay »:0,« extractAttribute »:« data-content »,« id »:« tel »,« multiple »:true,« parentSelectors »:[« element »],« selector »:« a »,« type »:« SelectorElementAttribute »}]}

Etant donné que je débute, je dois foirer quelque part, mais après plusieurs heures de galères, je ne trouve pas ou. Je m’en remet donc à vos connaissances !

Au plaisir,

En fait pour rendre le scraping du numéro un peu plus complexe, le numéro de téléphone est encapsulé dans du html qui est lui même la valeur de l’attribut « data-content ».

« data-content » est un attribut du tag a#phoneIcon

Vous devez donc commencer par extraire le tag a#phoneIcon avec tous ses attributs.

Ensuite il faut extraire le contenu de l’attribut data-content.

Ensuite il faut reparser le contenu ainsi généré et là vous pouvez extraire le texte.

C’est simple à faire en Python avec requests et BeautifulSoup, avec webscraper.io je ne sais pas, je n’utilise pas ce logiciel.

Voici le code python si ça peut vous aider :

import requests
from bs4 import BeautifulSoup

url = "https://www.proprietes-privees.com/negociateur/nedia.albouy"
headers = {"user-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:94.0) Gecko/20100101 Firefox/94.0"}

response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
phone_tag = soup.select_one("#phoneIcon").attrs["data-content"]
telephone_soup = BeautifulSoup(phone_tag, "html.parser")
telephone = telephone_soup.text
print(telephone)

1 « J'aime »

Merci pour cette réponse ! :slight_smile: