Scraping annuaire des artisans

Hello @tous,

Je cherche une technique pour scrapper l’annuaire du site www.artisans-du-batiment.com/trouver-un-artisan/
Il a pas l’air compliqué mais je bute sur les outils à utiliser.
L’annuaire nécessite 2 champs de recherche : profession et localisation.
Les résultats renvoient max 24 lignes.
J’aimerai pouvoir récupérer tous les résultats de recherche pour une profession donnée, sur toute la France. Plutôt qu’à passer par une recherche par code postal + enregistrement des adresses via Email Extractor + changement de code postal, etc… et ainsi de suite.

Merci à tous.

Hello,

Pour venir à bout de cette tâche, il faut automatiser l’envoi de requêtes HTTP, méthode POST, avec les divers combinaisons possibles et souhaitées pour les paramètres job & code postal ( exemple: job=plombier&where=54000).

Si tu possèdes un « dictionnaire » de mots clés à injecter dans le paramètre « job », il ne reste plus qu’à définir les codes postaux à injecter dans le second param, tu peux faire une recherche sur tous les codes postaux terminant par 0 et 5 ou ne faire que les pairs, ou tous.

Il n’a pas l’air compliqué, et pourtant, il l’est un peu, mais c’est faisable :slight_smile:

La communauté pourra t’aider quant à l’existence d’outil déja existant pour faire ça, sinon je le propose en presta en cas de dernier recours.

Oui pour une fois un site plutôt bien fait contre le scraping. Par contre, mettre les emails en clair…

Je te rassure, les emails sont encryptés via Javascript, du coup les scripts de type Python ou PHP ne pourront les retourner en « clair ».

Enfin bon, vu le niveau d’encryptage… c’est encodé via des « HTML entities », représentant le code ASCII des caractères en base décimale, par exemple ce code:

<script language=Javascript type=text/javascript> document.write('&#114;&#111;&#110;&#97;&#108;&#100;&#46;&#109;&#117;&#108;&#108;&#101;&#114;'); document.write('@'); document.write('&#99;&#108;&#117;&#98;&#45;&#105;&#110;&#116;&#101;&#114;&#110;&#101;&#116;&#46;&#102;&#114;');</script>

Produira cela:
[email protected]

Deux choix donc pour gérer ce type de contenu:

  • soit via une regex faire un preg_replace afin de remplacer l’entité HTML de type &#([0-9]+) par le caractère correspondant au code ASCII identifié par la base décimale [0-9]+ (exemple: 114 est le code ASCII base décimale de la lettre « r » en minuscule)
  • soit obtenir le HTML modifié dynamiquement après chargement du DOM, via un script en CasperJS/PhantomJS

Merci bien pour ces éclaircissements. Ca a l’air super complexe… Mais bon je ne perd pas espoir ! :slight_smile:

Mozenda gère ça très bien ; je regarde si je peux te faire un petit test

Malheureusement même avec l’offre de base à $99 / mo, la limite ne sera pas suffisante (5,000 – 25,000 page credits/mo), sachant qu’il faudra injecter N codes postaux * M job keywords, il y aura facilement plus de 100 000 combinaisons à faire. A ce prix là, achetons Français :smiley:

en fait non, seulement 32 000 communes et ça tourne impec gentiment chez moi.

Ha non du tout, c’est juste que 32 000 communes x de nombreuses professions, ça tourne bien au delà des 100 000 combinaisons, et du coup l’offre à $99 n’est pas assez… :confused:

1 « J'aime »

mais on peut toujours négocier avec Mozenda et acheter un crédit de test ponctuel …

Je vais regarder la solution et faire un test dans un premier temps.
Je veux bien acheter français également. Tu peux me contacter en MP si tu veux qu’on discute sur ce point. Bien sûr je vais essayer autant que possible de me débrouiller seul en optimisant au mieux le budget disponible :wink:

1 « J'aime »

Hello,

tu peux faire une demande de script sur freelancer.com généralement tu auras une réponse et ton script sous 24h. Si la base est très longue à scraper il faudra le faire tourner sur ton PC sinon tu auras les résultat avec le script généralement en python :slight_smile:

Tu fais une liste des recherches que tu veux faire ainsi que des listes des codes postaux. Ça devrait ressembler à quelque chose comme ça :

liste_recherches = [‹ plombier ›,‹ chauffagiste ›,‹ plaquiste ›,‹ menuiserie ›]
liste_codespostaux = [75000,76000,77000] (tu peux automatiser ce tableau).

Et tu fais deux boucles imbriquées. Honnêtement ce n’est pas très complexe et je ne pense pas qu’ils luttent contre le scrapping, donc tu peux le faire assez rapidement et extraire au format que tu veux.

avec suppression des cookies + time out et temps de pause aléatoire

Mouai enfin la contrepartie c’est un référencement pourri. Et le site ne résistera pas à quelqu’un de motivé malgré cela. Cela ne fait que ralentir mais n’arrête pas.

@oneal je viens de faire un scrap avec deux recherches sur 3 départements et ça passe sans problèmes. Pas de sécurité :slight_smile:

Of course ! :wink:

tu l’as fait avec quel outil ?

Node + Casper

Ca fait un peu répétition :joy: