Webscraper + Hôtels Atout France

Salut à tous,

Je suis débutant dans le scraping, et je tente désespérément de scraper le site suivant : Recherche Etablissements - Atout France

Effectivement, il s’agit d’une base de donnée de plus de 20.000 établissements de logement en France.
Le fichier est téléchargeable, mais disponible SANS les adresses mails :confused: Et c’est malheureusement ce que je recherche principalement.

Serait-il possible d’avoir une solution ? Une nouvelle extension ? Une nouvelle méthode (gratuite) pour extraire cette liste si simple à première vue

Merci par avance :slight_smile:

Dans le detail du moteur, il y a les coordonnées téléphoniques et le mail . Vous pouvez scrapper le detail

Serait-il possible d’avoir un peu plus de précision, car je ne comprends pas …?

Effectivement quand je clic sur un établissement, j’accède à un pop up non scrapable avec le mail et le tel. Mais cette fenêtre n’est pas reconnu par webscrapper…

bonjour, les outils comme webscraper sont simple d’utilisation, mais la contrepartie c’est que pour des sites un peu « dynamiques » ou un peu évolués on ne pourra pas tout faire, là en l’occurrence les données de contact sont présentes dans le code de la page mais il faux cliquer pour les afficher, si çà vous intéresse je vous récupère çà c’est pas bien compliqué, (je le fais en python), on en discute en MP

J’ai téléchargé toutes les données (20683 résultats + nom, numéro, mail, adresse postale, catégorie, nombre d’étoiles, site web de l’hôtel, lien sur le site atout-france.fr).

Si ça vous intéresse, MP.

1 « J'aime »

Hello,

Merci pour ton site, je trouve ça super intéressant !
Connais-tu d’autres sites équivalent pour trouver une liste d’entreprise en France ?

Et curieux d’avoir ton retour sur le scrapping de ces données, quelqu’un du forum t’a apporté une réponse ?

Python beautifulsoup
Javascript phantombuster
Excel vba avec htlmimport microsoftxml2

Si c’est possible je veux bien le fichier si c’est possible ?

Merci

Merci beaucoup je vais essayer de creuser ca alors :wink:

Je suis entrain de regarder la dernière solution de Jorgi pour essayer de voir ce que cela peut donner :slight_smile:

Hello @Motorcycle24,

Avec webscraper.io c’est tout à fait jouable, il faut utiliser un selecteur de type Element click :slight_smile:

Ci-dessous un sitemap qui clique sur chaque etablissement pour faire apparaître le popup, et qui scrap le nom. Je te laisse t’occuper de la pagination et récupérer tous les éléments qui t’intéressent.

{"_id":"atout-france","startUrl":["https://www.classement.atout-france.fr/recherche-etablissements?p_p_id=fr_atoutfrance_classementv2_portlet_facility_FacilitySearch&p_p_lifecycle=0&p_p_mode=view&p_p_state=normal&_fr_atoutfrance_classementv2_portlet_facility_FacilitySearch_is_luxury_hotel=no&_fr_atoutfrance_classementv2_portlet_facility_FacilitySearch_performSearch=1"],"selectors":[{"clickElementSelector":"div.facility-detail:nth-of-type(n+3)","clickElementUniquenessType":"uniqueCSSSelector","clickType":"clickOnce","delay":2000,"discardInitialElements":"do-not-discard","id":"click","multiple":true,"parentSelectors":["_root"],"selector":".facility-detail-modal--active div.facility-detail--wrapper","type":"SelectorElementClick"},{"delay":0,"id":"name","multiple":false,"parentSelectors":["click"],"regex":"","selector":"span:nth-of-type(1)","type":"SelectorText"}]}

Sinon en effet ça se scrap très bien en python, mais c’est une autre histoire !

Salut @ClementAubry !

Merci pour ta réponse et le sitemap ! :slight_smile:
Alors effectivement j’avais déjà fait cela, est ca ne marche toujours pas… tout simplement webscrapper ne parviens pas à extraire les données. D’ailleurs même le nom ne fonctionne pas avec ton sitemap? En tout cas sur mon pc cela ne veut pas…

Il faudrait que je commence à me former en python apparemment ahah :smiley:

Une idée de comment faire pour me sortir de cette galère avec les petits moyens du bord ? :slight_smile:
Merci en tout cas !

bonjour, si tu veux faire par toi même, effectivement, apprends python, personnellement je n’utilise quasiment que çà, c’est parfois plus rapide et bien plus puissant que les outils comme webscraper, après c’est un choix, soit on fait du no-code mais avec ses limites, soit on se prends quelques jours pour apprendre python et on n’est pas limité (ou rarement). Pour le site en question j’utiliserais python et requests_html, tu charge séquentiellement toutes les pages, la page html contient toutes les données même si elles n’apparaissent pas, du coup avec requests_html il est possible de faire des recherches par xpath, et de ranger tout çà dans un tableau, par exemple avec la librairie pandas.

Alors merci beaucoup pour tes réponses.

Pour l’instant c’est clairement du chinois pour moi, mais je garde ça précieusement je pense commencer mon apprentissage sous peu, car l’intérêt pour mon entreprise est énorme, et je te tiendrais au courant si j’y arrive grâce à tes conseils :wink:

Merci en tout cas :slight_smile:

Pas besoin d’utiliser requests_html en Python, requests suffit amplement (plus rapide, pas de javascript à charger et exécuter).

Quand on clique sur une fenêtre popup, il faut regarder dans la console du navigateur si une requête ajax est envoyée au serveur pour récupérer les données, ici ce n’est pas le cas, ça veut donc dire que les données ont déjà étés récupérées par le frontend. La petite subtilité ici c’est que les données sont envoyées via des requêtes ajax pour chaque page (mais c’est bien pour chaque page, au moment de cliquer sur le popup les données sont déjà dans le html) mais ça ne pose pas de problème car l’url de la requête ajax est poussée dans le frontend (dans la barre de navigation du navigateur) à chaque changement de page (vous pouvez donc utiliser l’url présente dans le navigateur pour demander les données).

Un autre conseil pour les gens qui désirent scraper ce site : évitez de passer les cookies sinon vous serez bloqué après 100 requêtes.

requests_htmt gère le js mais ce n’est pas le but effectivement, je conseille requests_htmt pour remplacer requests + beautifull soup, car c’est bien plus léger, (requests tout seul ne suffit par il faut aller parser le html, ou alors je souhaite bon courage pour le faire à la main)

Ah oui bien sûr qu’il faut aussi parser le html avec beautifulsoup. Mais dans le cas d’espèce exécuter le code javascript n’est pas nécessaire et a souvent pour effet de ralentir le scraping (il y a plus de 1900 requêtes à envoyer ici).

tout à fait d’accord, il ne faut pas executer le js, et par defaut requests_html ne le fait pas, pour cela il faudrait exécuter r.html.render() mais bon je crois qu’on dévie de la question initiale :sweat_smile:

Ah ok moi je croyais que tu voulais rendre le javascript pour cliquer sur la popup où je ne sais quoi…

Si tu veux scraper et parser du html avec une seule bibliothèque, il y a aussi mechanicalsoup (grosso modo c’est requests + BS4).

C’est plutôt pas mal.

L’état fournit les données des hébergements classés en open data pour info > https://www.datatourisme.gouv.fr/

1 « J'aime »