Scraping TripAdvisor - Code / Sans code ?


#22

Wowowow génial @cebri ! Ca m’intéresse énormément!
MP envoyé :wink:

Incroyable la tournure qu’a pris ce post !


#23

Yes :smiley: ton JSON fonctionne très bien pour moi pour TripAdvisor, merci @ScrapingExpert!
En revanche j’ai essayé de le faire aussi sur un autre site pour tester. Ca scrape bien la 1ère page (c’est un bon début!) mais ça ne clique pas sur la pagination, je ne comprends pas pourquoi. Je crois avoir pourtant bien paramétré le clic. Mon Selector Graph est comme ça :

Donc je dois avoir un truc mal paramétré au niveau de la pagination mais j’ai testé plein de trucs et je suis bloqué pour l’instant. Peut-être que le sélecteur de la pagination est aussi autre part dans la page ? (mais je crois pas, je n’ai pas trouvé de classe “pagination” ailleurs). Si tu es chaud pour jeter un œil et me donner une piste de solution ce serait hyper cool ! Mon JSON exporté :

{"_id":"test","startUrl":["https://lefooding.com/fr/restaurants?filters%5Bgeo%5D%5Bdepartment%5D%5B%5D=526ba0997f55b7f39a00005e&page=1&sort="],"selectors":[{"id":"item","type":"SelectorElement","parentSelectors":["item"],"selector":"li.results-item","multiple":true,"delay":0},{"id":"paris","type":"SelectorLink","parentSelectors":["_root"],"selector":"article.restaurants li:nth-of-type(2) a","multiple":false,"delay":0},{"id":"items","type":"SelectorElementClick","parentSelectors":["paris","paginationlinks"],"selector":"li.results-item","multiple":true,"delay":"20","clickElementSelector":"nav.pagination ul","clickType":"clickOnce","discardInitialElements":false,"clickElementUniquenessType":"uniqueText"},{"id":"title","type":"SelectorText","parentSelectors":["items"],"selector":"h1.result-title a","multiple":false,"regex":"","delay":0},{"id":"adress","type":"SelectorText","parentSelectors":["items"],"selector":"li.street-name","multiple":false,"regex":"","delay":0},{"id":"city","type":"SelectorText","parentSelectors":["items"],"selector":"li.city","multiple":false,"regex":"","delay":0},{"id":"phone","type":"SelectorText","parentSelectors":["items"],"selector":"li.phone","multiple":false,"regex":"","delay":0},{"id":"category","type":"SelectorText","parentSelectors":["items"],"selector":"div.envies span:nth-of-type(1)","multiple":false,"regex":"","delay":0},{"id":"price","type":"SelectorText","parentSelectors":["items"],"selector":"div.result-info.price span","multiple":false,"regex":"","delay":0},{"id":"paginationlinks","type":"SelectorLink","parentSelectors":["paris","paginationlinks"],"selector":"nav.pagination ul","multiple":true,"delay":0}]}


#24

Ce sélecteur CSS n’est pas le bon, il faudrait plutôt mettre ‘nav.pagination li.next’.

Par ailleurs, le paramètre ‘clickElementUniquenessType’ n’est pas bon non plus, mais il n’y a rien qu’on puisse faire ici car l’unicité du bouton page suivante ne peut pas être défini: ni son texte, si sa structure HTML ne changent, ils sont toujours les mêmes.

De plus ici le contenu est chargé via AJAX, ce n’est pas une pagination qui permet de changer de page, du coup je mettrais le click type à “Click more” et non pas “Click once”


#25

Franchement…lancer un défi à une bande de geek, sur un site avec de piètres défenses, un grand nombre de pages, et des emails & téléphones. Fallait s’y attendre :joy::joy::joy:


#26

Au top, ça a fonctionné ! En appliquant tes conseils, j’ai changé le JSON au niveau de “nav.pagination li.next” et “Click more”, je l’ai ré-importé et BIM. Thanks!!!


#28

Hello les potes,

Je me permets de mettre la pierre à l’édifice, pour la partie “Code” pure :evergreen_tree:

J’ai fait un petit script en Python, qui utilise les librairies Request pour le Crawling, et lxml (l’allemand, cela dit en passant) pour le Parsing.

Pour aller chercher les mails, j’utilise le regex sur les pages dédiées : *\w+@\w+.\w+
Petit exemple juste là: https://regex101.com/r/mxxapg/1

Ici le code : https://gist.github.com/Lobstrio/0729d2fe50e9ea4d38946a79a7db445a

Curieux d’avoir vos retours :crab:


#29

Hello Galette ! Pour info, voici un sitemap pour les restaurants de Lafourchette à Paris pour Webscrapper, ca peut peut-être te servir sait-on jamais :wink:

{"_id":"lafourchette","startUrl":["https://www.lafourchette.com/restaurant+paris"],"selectors":[{"id":"items","type":"SelectorElement","parentSelectors":["_root","pagination"],"selector":"li.resultItem","multiple":true,"delay":0},{"id":"name","type":"SelectorText","parentSelectors":["items"],"selector":"h3.resultItem-name a","multiple":false,"regex":"","delay":0},{"id":"adress","type":"SelectorText","parentSelectors":["items"],"selector":"div.resultItem-address","multiple":false,"regex":"","delay":0},{"id":"origin","type":"SelectorText","parentSelectors":["items"],"selector":"span.restaurantTag","multiple":false,"regex":"","delay":0},{"id":"price","type":"SelectorText","parentSelectors":["items"],"selector":"div.resultItem-averagePrice","multiple":false,"regex":"","delay":0},{"id":"pagination","type":"SelectorLink","parentSelectors":["_root","pagination"],"selector":"div.pagination li:nth-of-type(n+3) a","multiple":true,"delay":0}]}


#30

Salut merci pour le tuto , tout fonctionne nickel pour moi sur trip , mais j’ai pas la Colonne Href du screen 10 étrange !


#31

Salut les GH,

Voilà maintenant 6 mois que je galère avec TripAdvisor sur un listing d’expérience,
Je pense que Trip a mis une protection supplémentaire sur les Emails pour éviter les scrapers …

Je Scrap avec Webscraper.io, j’ai éditer un sujet qui détail avec précision mon sitemap et mon problème (Rédigé en Anglais).

Merci d’avance pour votre aide : Le bouton Email appel le système de messagerie par défaut (chez moi Gmail) sur la même page. L’adresse Mail est contenu dans l’URL de cette page mais je n’arrive pas à l’extraire, Des solutions ?

Et voici le Sitemap de “barbar” :

{"_id":“tripadvisor_atelier”,“startUrl”:["[https://www.tripadvisor.fr/Attractions-g187147-Activities-c41-Paris_Ile_de_France.html",“https://www.tripadvisor.fr/Attractions-g187139-Activities-c41-Corsica.html”,“https://www.tripadvisor.fr/Attractions-g187079-Activities-c41-Bordeaux_Gironde_Nouvelle_Aquitaine.html”,“https://www.tripadvisor.fr/Attractions-g187265-Activities-c41-Lyon_Rhone_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g187234-Activities-c41-Nice_French_Riviera_Cote_d_Azur_Provence_Alpes_Cote_d_Azur.html”,“https://www.tripadvisor.fr/Attractions-g187253-Activities-c41-Marseille_Bouches_du_Rhone_Provence_Alpes_Cote_d_Azur.html”,“https://www.tripadvisor.fr/Attractions-g187175-Activities-c41-Toulouse_Haute_Garonne_Occitanie.html”,“https://www.tripadvisor.fr/Attractions-g187178-Activities-c41-Lille_Nord_Hauts_de_France.html”,“https://www.tripadvisor.fr/Attractions-g187153-Activities-c41-Montpellier_Herault_Occitanie.html”,“https://www.tripadvisor.fr/Attractions-g187075-Activities-c41-Strasbourg_Bas_Rhin_Grand_Est.html”,“https://www.tripadvisor.fr/Attractions-g187209-Activities-c41-Aix_en_Provence_Bouches_du_Rhone_Provence_Alpes_Cote_d_Azur.html”,“https://www.tripadvisor.fr/Attractions-g187198-Activities-c41-Nantes_Loire_Atlantique_Pays_de_la_Loire.html”,“https://www.tripadvisor.fr/Attractions-g187221-Activities-c41-Cannes_French_Riviera_Cote_d_Azur_Provence_Alpes_Cote_d_Azur.html”,“https://www.tripadvisor.fr/Attractions-g187217-Activities-c41-Antibes_French_Riviera_Cote_d_Azur_Provence_Alpes_Cote_d_Azur.html”,“https://www.tripadvisor.fr/Attractions-g13320446-Activities-c41-Carcassonne_Aude_Occitanie.html”,“https://www.tripadvisor.fr/Attractions-g187206-Activities-c41-La_Rochelle_Charente_Maritime_Nouvelle_Aquitaine.html”,“https://www.tripadvisor.fr/Attractions-g187212-Activities-c41-Avignon_Vaucluse_Provence_Alpes_Cote_d_Azur.html”,“https://www.tripadvisor.fr/Attractions-g187257-Activities-c41-Toulon_Var_Provence_Alpes_Cote_d_Azur.html”,“https://www.tripadvisor.fr/Attractions-g187264-Activities-c41-Grenoble_Isere_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g187137-Activities-c41-Reims_Marne_Grand_Est.html”,“https://www.tripadvisor.fr/Attractions-g187091-Activities-c41-Clermont_Ferrand_Puy_de_Dome_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g187111-Activities-c41-Dijon_Cote_d_Or_Bourgogne_Franche_Comte.html”,“https://www.tripadvisor.fr/Attractions-g187148-Activities-c41-Versailles_Yvelines_Ile_de_France.html”,“https://www.tripadvisor.fr/Attractions-g187109-Activities-c41-Beaune_Cote_d_Or_Bourgogne_Franche_Comte.html”,“https://www.tripadvisor.fr/Attractions-g187130-Activities-c41-Tours_Indre_et_Loire_Centre_Val_de_Loire.html”,“https://www.tripadvisor.fr/Attractions-g187226-Activities-c41-Hyeres_French_Riviera_Cote_d_Azur_Provence_Alpes_Cote_d_Azur.html”,“https://www.tripadvisor.fr/Attractions-g187080-Activities-c41-Biarritz_Basque_Country_Pyrenees_Atlantiques_Nouvelle_Aquitaine.html”,“https://www.tripadvisor.fr/Attractions-g580167-Activities-c41-Ile_d_Oleron_Charente_Maritime_Nouvelle_Aquitaine.html”,“https://www.tripadvisor.fr/Attractions-g187151-Activities-c41-Carcassonne_Center_Carcassonne_Aude_Occitanie.html”,“https://www.tripadvisor.fr/Attractions-g196484-Activities-c41-Porto_Vecchio_Corse_du_Sud_Corsica.html”,“https://www.tripadvisor.fr/Attractions-g207359-Activities-c41-Morzine_Portes_du_Soleil_Haute_Savoie_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g187269-Activities-c41-Saint_Etienne_Loire_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g669639-Activities-c41-Saint_Martin_de_Belleville_Savoie_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g196504-Activities-c41-Anglet_Basque_Country_Pyrenees_Atlantiques_Nouvelle_Aquitaine.html”,“https://www.tripadvisor.fr/Attractions-g196714-Activities-c41-Tignes_Savoie_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g187256-Activities-c41-Saint_Remy_de_Provence_Bouches_du_Rhone_Provence_Alpes_Cote_d_Azur.html”,“https://www.tripadvisor.fr/Attractions-g187157-Activities-c41-Uzes_Gard_Occitanie.html”,“https://www.tripadvisor.fr/Attractions-g187266-Activities-c41-Megeve_Haute_Savoie_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g187271-Activities-c41-Val_d_Isere_Savoie_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g187262-Activities-c41-Courchevel_Savoie_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g187224-Activities-c41-Grasse_French_Riviera_Cote_d_Azur_Provence_Alpes_Cote_d_Azur.html”,“https://www.tripadvisor.fr/Attractions-g641840-Activities-c41-Capbreton_Landes_Nouvelle_Aquitaine.html”,“https://www.tripadvisor.fr/Attractions-g1080950-Activities-c41-Les_Allues_Savoie_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g580182-Activities-c41-Meribel_Les_Allues_Savoie_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g196716-Activities-c41-Val_Thorens_Saint_Martin_de_Belleville_Savoie_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g562740-Activities-c41-Bourg_Saint_Maurice_Savoie_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g196712-Activities-c41-Samoens_Grand_Massif_Haute_Savoie_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g196707-Activities-c41-Les_Deux_Alpes_Isere_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g187272-Activities-c41-Valence_Drome_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g196672-Activities-c41-Bandol_French_Riviera_Cote_d_Azur_Provence_Alpes_Cote_d_Azur.html”,“https://www.tripadvisor.fr/Attractions-g425002-Activities-c41-Hossegor_Landes_Nouvelle_Aquitaine.html”,“https://www.tripadvisor.fr/Attractions-g13231714-Activities-c41-Val_Cenis_Savoie_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g1056015-Activities-c41-Saint_Gilles_Croix_de_Vie_Vendee_Pays_de_la_Loire.html”,“https://www.tripadvisor.fr/Attractions-g1933300-Activities-c41-Abondance_Portes_du_Soleil_Haute_Savoie_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g227893-Activities-c41-Montrouge_Hauts_de_Seine_Ile_de_France.html”,“https://www.tripadvisor.fr/Attractions-g562738-Activities-c41-Avoriaz_Morzine_Portes_du_Soleil_Haute_Savoie_Auvergne_Rhone_Alpes.html”,“https://www.tripadvisor.fr/Attractions-g790302-Activities-c41-Vincennes_Val_de_Marne_Ile_de_France.html”,“https://www.tripadvisor.fr/Attractions-g226885-Activities-c41-Louviers_Eure_Haute_Normandie_Normandy.html”],"selectors":{“id”:“Exploreur”,“type”:“SelectorElementClick”,“parentSelectors”:["_root"],“selector”:"div.listing_titlea",“multiple”:true,“delay”:0,“clickElementSelector”:“a.nav”,“clickType”:“clickMore”,“discardInitialElements”:false,“clickElementUniquenessType”:“uniqueText”},{“id”:“fiche”,“type”:“SelectorLink”,“parentSelectors”:[“Exploreur”],“selector”:" parent “,“multiple”:true,“delay”:0},{“id”:“Nom”,“type”:“SelectorText”,“parentSelectors”:[“fiche”],“selector”:“h1.ui_header”,“multiple”:false,“regex”:”",“delay”:0},{“id”:“Popularité”,“type”:“SelectorText”,“parentSelectors”:[“fiche”],“selector”:“span.header_popularity”,“multiple”:false,“regex”:"",“delay”:0},{“id”:“Adresse1”,“type”:“SelectorText”,“parentSelectors”:[“fiche”],“selector”:“span.detail span.street-address”,“multiple”:false,“regex”:"",“delay”:0},{“id”:“Adresse2”,“type”:“SelectorText”,“parentSelectors”:[“fiche”],“selector”:“span.detail span.locality”,“multiple”:false,“regex”:"",“delay”:0},{“id”:“Adresse3”,“type”:“SelectorText”,“parentSelectors”:[“fiche”],“selector”:“span.detail span.country-name”,“multiple”:false,“regex”:"",“delay”:0},{“id”:“Types”,“type”:“SelectorText”,“parentSelectors”:[“fiche”],“selector”:“span.is-hidden-mobile”,“multiple”:false,“regex”:"",“delay”:0},{“id”:“Urls”,“type”:“SelectorPopupLink”,“parentSelectors”:[“fiche”],“selector”:“div.contactType.website span.taLnk”,“multiple”:false,“delay”:0},{“id”:“Emails”,“type”:“SelectorPopupLink”,“parentSelectors”:[“fiche”],“selector”:“div.contactType.email span.taLnk”,“multiple”:false,“delay”:“0”}]}


#32

Hello,

Tu ne pourras rien faire avec l’extension Webscraper à ce niveau, c’est trop limité techniquement parlant.

L’adresse email est encodée via Javascript, par conséquent si tu veux l’obtenir il te faut passer par une autre technique que Webscraper, et savoir coder un minimum.


#33

Hello,

Merci infiniment pour ce retour !
ça m’évitera des maux de tête :slight_smile:

Quel outil pas trop compliqué en terme d’utilisation peux me permettre de décoder ce Javascript (sans trop pousser au niveau du code mais sinon je peux aussi demander de l’aide à mon dev …)

Merci d’avance !


#34

Je ne saurais pas répondre à la question “pas trop compliqué en terme d’utilisation”, ni “trop poussé au niveau code”, ne sachant pas comment tu évalues ce niveau.

Dans tous les cas il te faudra récupérer un des attributs de la balise HTML contenant l’email, avec Webscraper, puis faire tourner un script qui va traiter le CSV résultat, script qui va lire le fichier ligne par ligne et décoder l’email.

Tu peux utiliser n’importe quel langage pour ça, JavaScript par exemple.


#35

scrapebox.


Team : CamilleBriceJulienVivianBorisXavierSteven.