Scraping Annonces Immobilières


#1

Bonjour, j’essaie de faire un script en python/selenium pour scraper un site d’annonces immobilières. La spider fonctionne correctement, mais le site bloque l’accès à l’API après 3 à 10 requêtes.

J’ai essayé :

  • IP tournants
  • proxy
  • user agent

Des idées ?


#2

Salut,

Tu as essayer de faire des pauses entre chaque requête? Genre 15 secondes voir plus si il te bloque encore


#3

Quel est le site en question ? Combien de temps entre chaque requête? J’y jetterai un oeil à l’occaz.


#4

Coucou,

Merci à tous pour vos conseil, effectivement en ajoutant des pauses, les sites scrapés stop le ban.
@francima, les sites sont :

Bonne journée,
Sasha


#5

Qu’est ce qui ne fonctionne pas avec des proxy ?
Il n’y pas 36 solutions pour qu’ils détectent que c’est un bot. Générallement le blocage est fait sur les critères suivant :

  • Requêtes / sec
  • Requêtes / ip
  • User agent inconnu
  • Javascript desactivé
  • Captcha

Pour contourner, tu peux effectivement utiliser des proxy, et les faire tourner, mettre un vrai user-agent, voir faire tourner les users-agents, et égallement copier l’intégralité des headers qu’envoit un vrai navigateur. Met égallement un temps random entre chaque requête (du genre entre 100 et 300 ms).

Si ça ne fonctionne toujours pas, il y a peut-être un contrôle plus poussé a base de javascript, que tu peux contourner avec Chrome en mode headless. Il y a des binding python avec selenium :) De cette manière, il n’y a aucune manière (a ma connaissance) de faire la différence entre ton bot et un “vrai” navigateur Chrome.


#6

Bonjour Kevin,

Merci beaucoup pour ta réponse, il y avait en effet un nombre limite de requêtes pas IP par minute, qui a été contourné avec du rotating IP.

Qu’est-ce que tu appelles “binding python” cependant ?

Bonne journée,
Sasha


#7

Bonjour, je à collecter les données de sites automobiles.
A défaut d’API, cela devra passer dans un 1er temps par du scraping.
L’enjeu est évidemment que celui-ci soit pérenne :

  • pouvoir modifier le code en fonction des “champs qui bougent”
  • et surtout ne pas être blacklisté.
    L’objectif serait de se connecter 1 fois par jour aux sites identifiés afin de mettre à jour les données dans notre base…
    Savez-vous s’il y a des outils qui permettent de faire cela … pour des nons développeurs ?

Merci !


#8

Bonjour !

Pour moi le mieux est de prendre le temps de faire un partenariat avec ces sociétés.
Si tu y arrives : parfait, ils trouveront le moyen que ça marche. Technique ou non.

Si tu n’y arrives pas parce que le process est lent / pas le bon interlocuteur : bienvenue dans le monde merveilleux du B2B.

Si tu décides d’y aller quand même, il est probable que leurs services te détectent très vite, car ils ont une équipe d’informaticiens. Non seulement c’est probablement contre leur politique de données, mais en plus c’est tout simplement illégal : eh oui, depuis 1985 voire plus tôt, aller chercher des informations que la boîte ne veut pas donner, MÊME si elles sont mal protégées, c’est interdit. Comme tu n’as pas forcément fait ça longtemps ou sur trop de données, et que tu n’as pas encore fait trop d’argent dessus, tu n’auras peut-être pas de gros procès si tu es découvert.

Si tu y vas discrètement et que tout marche : bravo, mais si monter sa boîte sur un coup de chance (et relancer les dés tous les mois en priant qu’ils ne regardent pas), c’est pas une stratégie. Plus tu fais d’argent, plus la probabilité que tu te prennes un gros procès en cas de découverte augmente.

Si ça ne marche pas parce que le partenariat niveau business ne peut pas tenir*, c’est peut-être que l’idée n’est pas tenable pour une boîte. Tu peux toujours en faire un hobby ou une association, mais là encore ça n’est pas une stratégie viable pour savoir ce que tu vas manger demain ou sur dix ans.

  • exemples : tu n’aurais une chance QUE si tu fonctionnes en sous-marin, parce que si les marques automobiles se mêlaient à ton idée alors elles pourraient faire (mieux, plus vite, moins cher…). Les partenariats sur des idées, c’est bien ; les partenariats sur de la valeur, c’est mieux :)

Désolé de jouer au rabat-joie, je te souhaite bon courage et bonne chance.
C’est à dire que ce soit propre, légal et entre business consentants :)