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:


Communauté initiée par @camillebesse avec l'aide de @Cebri@JulienD@VivianSolide@Boristchangang
Follow @growthhackingfr