Scraping fédération de badminton

Bonjour à tous,

Première contribution pour un problème que je rencontre :thinking: Je souhaite scrapper les adresses emails de la fédération de badminton. Je butte concernant l’extraction avec la fonction IMPORTXML dans un Google Sheet.

Les URL’s sont de la forme :

Voici le XPATH où sont les adresses emails :

  • //*[@id=« main »]/div/section/div/div/section/section/div[1]/div[3]/div[2]/section/p/a

J’ai essayé ça aussi :

  • //a[starts-with(@href, ‹ mailto ›)]/text()

Je n’ai que des messages d’erreur. Je ne comprends pas où est le souci, auriez-vous des conseils ou une solution à ce problème ?

Merci d’avance pour vos retours :pray:

1 « J'aime »

tes sélecteurs ont l’air corrects
sous JS: document.querySelector(‹ #main section > div:nth-child(1) > div:nth-child(3) > div.card-info-content > section > p > a ›).href

Mais il me semble que le XPath va retourner TOUS les élements
Du coup, c’est un tableau à 1 élement

Donc en JS, il faut choisir le premier élement du tableau

$x(« //a[starts-with(@href, ‹ mailto ›)]/text() »)[0]

PS. Quelles erreurs obtiens tu ?

Merci pour ta réponse,
j’ai toujours comme message d’erreur « Le contenu importé est vide. » :thinking:

Ca ne serait pas plus facile de scrapper ceci avec n’importe quel autre moyen et de faire un copier / coller dans google Sheet ?
Comme c’est très basique (itération page + sélection) , je pense que ça serait très rapide.
Je comprends la nécessité de comprendre le problème sur google sheet, mais l’efficacité avant tout, non ?

Sinon tu as cet appel : https://myffbad.fr/api/club/1/informations/
Qui sort toutes les informations bien formatées :

{
    "addressContactId": 350157,
    "addressId": 350157,
    "affiliateNumber": "FC  .00.00.000",
    "city": "Besançon",
    "contact": "0381489186",
    "department": 25,
    "mail": "[email protected]",
    "fax": "",
    "initials": "LFC",
    "id": 10,
    "logo": "https://poona.ffbad.org/download/logo/logo_LFC_10.jpg",
    "mobile": "",
    "name": "Ligue FRANCHE COMTE",
    "type": "Ligue",
    "website": "http://www.lfcb.fr",
    "address": {
        "address": "11 route de Gray",
        "addressId": 350157,
        "building": "",
        "cedex": "",
        "country": "France",
        "floor": "",
        "locality": "",
        "city": "Besançon",
        "postalCode": "25000",
        "isContact": false
    },
    "contactAddress": {
        "address": "11 route de Gray",
        "addressId": 350157,
        "building": "",
        "cedex": "",
        "country": "France",
        "floor": "",
        "locality": "",
        "city": "Besançon",
        "postalCode": "25000",
        "isContact": false
    },
    "townHallAddress": {
        "addressId": null,
        "locality": "",
        "city": "",
        "isContact": false
    },
    "committee": {
        "addressId": null,
        "contact": "",
        "department": null,
        "fax": "",
        "id": null,
        "logo": ""
    },
    "leaders": [],
    "league": {
        "addressContactId": 350157,
        "addressId": 350157,
        "affiliateNumber": "FC  .00.00.000",
        "city": "Besançon",
        "contact": "0381489186",
        "department": 25,
        "mail": "[email protected]",
        "fax": "",
        "initials": "LFC",
        "id": 10,
        "logo": "https://poona.ffbad.org/download/logo/logo_LFC_10.jpg",
        "mobile": "",
        "name": "Ligue FRANCHE COMTE",
        "type": "Ligue",
        "website": "http://www.lfcb.fr"
    },
    "parentId": 1,
    "level": "LIGUE",
    "equipments": [],
    "slots": [],
    "label": {
        "labelId": null,
        "clubId": null,
        "date": null,
        "stars": null
    }
}

Il faut juste avoir un cookie valide il me semble…

Peut être tout simplement que googleSheet n’arrive pas à accéder au DOM du site (protection, cookie…) et reçoit une page vide, voire un 403

ça doit être ça, je vais essayer autrement, ça me paraissant tellement simple au départ :sweat_smile:- erreur…

Merci en tout cas :+1:

As-tu réussi depuis ? Je pense qu’un simple script en python pourrait faire l’affaire sinon

Oui c’est bon, j’ai voulu faire compliqué pour un truc simple… Merci de demander en tout cas !

1 « J'aime »