Outil de scraping

Bonjour la communauté,

Petite question que je me posais, quelles sont les outils que vous utilisez à l’heure actuelle pour réaliser/faire vos scrappings?

Source de scraping : Page Jaune/annuaires spécialisés
Data du scraping : Nom/Adresse/mail

Merci par avance,

Hello,
L’extension webscraper fait très bien le taf. Je n’ai juste pas trouvé le truc pour récupérer le tel « masqué » sur les pages jaunes.
Quelqu’un a réussi ?

1 « J'aime »

L’extension prend les mails cachés ?

Hello,

Les numéros de tel sont biens dans le code sur pages jaunes (class = « num » de mémoire)

Alors au temps pour moi, après test j’arrive bien à tout récupérer.

De mémoire je crois que certaines infos étaient bloqués quand je scrapais en multipage (ex : une page de résultats en start-url).
Alors qu’en accès direct sur la fiche je scrapais bien.

A suivre

Hello,
Si jamais ça peut te donner quelques pistes, tu peux jeter un oeil dans la Toolbox , section « Scraping »:

OK thank’s. Juste une question, il est possible d’extraire un e-mail à travers un formulaire de contact? Merci bien

Hello,
Si il s’agit juste d’un vrai et simple formulaire de contact, sans aucune adresse e-mail cachée dans le code source, non il ne sera pas possible d’extraire un e-mail :confused:

Réponse à moi-même, pour scrapper le tél sur PJ c’est la classe span.coord-numero.noTrad

2 « J'aime »

Merci pour ta contribution ça pourrait m’être utile plus tard.

Sinon, j’ai réussis à scraper mes annuaires grâce à WebScraper.io très utile pour ceux qui manient pas le code. 3 jours d’extraction d’annuaire mon ordi à souffert mais ça en vaut la peine +17000 contacts.

Thank’s all

3 « J'aime »

J’adore tellement cette extension ! Elle m’a sauvé tellement de fois la vie :see_no_evil:

@kevinl, @David_Lopes: quels problèmes avez vous rencontré en utilisant WebScraper (bug ou autre, du type click sur des boutons/liens ne fonctionnant pas ou impossible d’extraire certaines portions de textes au sein de balises ) ?

Il serait intéressant de réécrire cette extension pour gérer autre chose que les sélecteurs CSS, et régler ces quelques bugs, mais vu le code… c’est l’usine, et en version JavaScript qui date d’il y a moult années :sob:

1 « J'aime »

Concernant WebScraper, j’ai eu un bug au départ en faisant de la pagination sur mon annuaire. L’outil tourné sans prendre de donnée. Au final, j’ai refait le process sans pagination et l’outil m’a scrap mes 17 000 contacts.

Hormis ça, il me semble que l’outil se base sur des balises h1/h2 etc… de ce fait, la structure de l’annuaire était à 95 % du temps la même donc pas de soucis pour la donnée extraite.
Cependant, en regardant mon csv 5 % de mes lignes n’ont pas la donnée qui correspondait à celle que j’attendais. Par exemple, au lieu d’avoir le @ je me retrouve avec le SIRET.
Rien de bien grave au vu du volume soustrait.

Je n’ai pas de grande connaissance tant en code qu’en scrap, l’outil a fait le job que j’attendais. Il ne me reste plus qu’à clean cette base maintenant :slight_smile:

1 « J'aime »

Salut David,

Sur quelle annuaire as tu bossé ? J’ai essayé sur les PJ mais rien…
Aucune data :’(

Si ça peut t’aider voici un exemple de sitemap pour les PJ avec nom, adresse, photos, tel, prestations, website, etc.

`{"_id":"sitemap-gh","startUrl":["https://www.pagesjaunes.fr/recherche/departement/correze-19/boulangerie"],"selectors":[{"id":"article","type":"SelectorElement","parentSelectors":["_root"],"selector":"article","multiple":true,"delay":0},{"id":"titre","type":"SelectorText","parentSelectors":["article"],"selector":"a.denomination-links","multiple":false,"regex":"","delay":0},{"id":"adresse","type":"SelectorText","parentSelectors":["article"],"selector":"a.adresse","multiple":false,"regex":"","delay":0},{"id":"categorie","type":"SelectorText","parentSelectors":["article"],"selector":"a.activites","multiple":false,"regex":"","delay":0},{"id":"prestations","type":"SelectorText","parentSelectors":["article"],"selector":"p:nth-of-type(1)","multiple":false,"regex":"","delay":0},{"id":"autre","type":"SelectorText","parentSelectors":["article"],"selector":"p:nth-of-type(2)","multiple":false,"regex":"","delay":0},{"id":"link","type":"SelectorLink","parentSelectors":["article"],"selector":"a.denomination-links","multiple":false,"delay":0},{"id":"tel","type":"SelectorText","parentSelectors":["link"],"selector":"span.coord-numero.noTrad","multiple":false,"regex":"","delay":0},{"id":"images","type":"SelectorImage","parentSelectors":["link"],"selector":".photo img","multiple":true,"delay":0},{"id":"website","type":"SelectorText","parentSelectors":["link"],"selector":".teaser-item.pj-lb span.value","multiple":false,"regex":"","delay":0}]}`
2 « J'aime »

@David_Lopes en ce qui me concerne je n’utilise (presque) jamais ce tool à titre pro en interne.

Mais pour avoir utilisé l’outil à maintes reprises sur des formations que l’on donne à des étudiants chez HumindSchool, on en est arrivé à la conclusion que l’outil est assez limité. En particulier lorsqu’il s’agit de gérer des boutons de pagination ou de cliquer sur des liens qui ne sont pas des balises de type lien « a » ou ne possédant pas d’attribut « href », et ce quelque soit la méthode utilisée (selector de type Link ou Element Click).

C’est dommage car cette extension est juste géniale, il ne manque pas grand chose:

  • gestion des sélecteurs XPaths
  • gestion des liens/boutons sans attribut « href », ou n’étant pas des liens standards
  • meilleure gestion des regexs/callbacks

Mais pour implémenter tout ça, il y a du boulot !

1 « J'aime »

Je vais test sur les pages jaunes avec ça. Je te dis ce qu’il en est

Il me semble que dans ton sitemap Json il manque la pagination. ( Le scrap s’arrête à la page 1 )

tout à fait, tu peux ajouter les pages manuellement au sitemap :

  • &page=1
  • &page=2
  • &page=3

etc.

Ne te prends pas trop la tête, tu peux simplement écrire ceci pour aller plus vite:

&page=[1-150]

En remplaçant 150 par le nombre total de pages qui s’applique dans ton cas :slight_smile: