Comment scraper un site qui change ses classes tous les jours ?

Bonjour,

J’essaye de scraper tous les matins une page (celle la : https://www.pinnacle.com/fr/tennis/matchups) sauf que je viens de me rendre compte qu’ils changent leurs classes régulièrement !

Genre il y a quelques jours j’avais cette classe :
style_participantName__30PPU ellipsis

et maintenant c’est cette classe : style_participantName__vRjBw ellipsis

Avez-vous des idées de comment je pourrais contourner ce système :wink: ?

Merci !

Est-ce que le xpath change ? Sinon au pire des cas > regex.

1 « J'aime »

Je ne connaissais pas le concept de xpath, je vais regarder ça :innocent:

Merci Camille !

Tu peux également garder des selectors classiques :

[class^=style_participantName__]

Tu remarqueras le ^ qui permet de dire « qui commence par », ainsi peu importe l’identifiant derrière.

4 « J'aime »

Si tu veux quelque chose de plus sûr, tu peux te baser sur les requêtes Ajax directement. C’est un peu plus long, car il faut comprendre comment ça fonctionne, mais change généralement bien moins souvent.

Quelques liens d’exemple

https://guest.api.arcadia.pinnacle.com/0.1/sports/33/matchups
https://guest.api.arcadia.pinnacle.com/0.1/sports

Etc…

Pour compléter les réponses qui devront déjà largement te suffire (notamment le xpath qui est le plus simple) tu peux imaginer te créer une fonction pour automatiquement détecter les nouvelles classes.

Tu enregistre une page HTML à un instant T, dont tu sais que le contenu (textuel) ne changera pas au cours du temps. Ca te permettra de retrouver les balises non pas à partir des classes mais à partir du texte.

Chaque jour, tu scrapes cette même page, retrouve les balises grâce au contenu et récupère la nouvelle classe :wink:

//div[contains(@class, 'ParticipantName')