Bonjour
je viens vers vous pour un sujet d’architecture sur le scrapping, voici ma problématique :
je souhaite créer un programme avec le langage python pour aller scraper différents sites de ventes de produits afin de récuperer les différents produits de différents sites ( environ 5 à 6 différents ) où chaque site contient environ 20 000 produits ( donc 20 000 page)
J’ai essayé sur mon poste de travail avec du code basique avec la bibliothèque request et beautiful soup . cela fonctionne
j'ai testé de déployer mon programme dans azure , dans une web application ( je début sur azure , je n'ai peut etre pas les bons termes) afin de pouvoir lancer le scrapping régulièrement avec de la planification effectué avec djangoQ/celery/flower ( cette partie n'est pas encore faite ni tester)
Mais je rencontre des problèmes , car le status renvoyé par mes commandes request python me renvoie le code 403 . je ne sais pas comment contourner cela ( les fake user agent dans les headers ne marchent pas , les rate limit ne fonctionnent pas , je n’arrive pas à faire fonctionner les headless browser sur la machine virtuel …)
Auriez vous des conseils pour faire tourner mon programme de scraping chaque jour idéalement sur azure ?
est ce que quelqu’un a deja mis en oeuvre un projet de scrapping dans un environnement azure , idéalement webapplication ?
Merci
ludovic
tu es sur le bon forum, par contre … t’expliquer en quelques minutes toutes les ficelles du scraping et qui plus est dans le cloud … çà va être chaud. Déjà avec requests et beautifullsoup tu vas galérer, utilises plutot requests_html. Ensuite vu le nombre de pages à scraper, c’est chaud, faut utiliser des requetes asynchrones et en parralèlle, mais pour toi je pense que le plus simple est d’essayer d’utiliser des frameworks de scraping comme scrapy, qui vont gérer tout çà pour toi, il faudra surement ajouter des plugings (rotating proxies …). J’ai réalisé des projets de ce type, pas sur azur mais sur des serveurs dédiés ou sur google cloud, bon çà revient un peu au même, c’est faisable mais si tu débutes en python va falloir t’accrocher
Bonjour
merci pour la réponse
si je comprends bien , une piste intéressante et qui devrait me permettre presque à coup sur de faire mon scrraping sur mon environnement azure serait la bibliotheque scrappy
Par contre je n’ai pas compris ce que tu voulais dire par « ajouter des plugings (rotating proxies …). »
J’avais vu comme solution sur le problème d’erreur 403 bloquant la lecture d’une page web :
- de jouer sur les user agent
- de jouer sur les header
- headless brower avec selenium
mais ces solutions n’arrivent pas à répondre
il me restait des solutions payantes à identifier entrant dans mon budget
- de passer par des proxy
- de passer par des api
est ce que la bibliotheque scrappy intégre gratuitement ces mecanismes de proxy et d’api ?
merci
Salut, il faut des proxies, tu ne pourras pas faire autrement. Ton IP azure n’a pas la même réputation que ton IP maison, c’est ça qui bloque.
1 « J'aime »
ok merci
y a t il d’autre solution que de passer par des proxies résidentiels payant comme ceux proposer par les service brightdata , oxylabs, smartproxy, … ?
y a t il des moyens dans le paramétrage et service de paramétrer des proxies résidentiels dans mon group de ressource azure ou mon app service azure ( dans la couche Vnet par exemple )
merci beaucoup
pour votre aide
1 « J'aime »
Hello Ludov,
il se peut que tu y ailles un peu fort sur le nombre de threads si tu utilises des concurrents futures. une des possibilités serait d’etre moins agressif avec le site en prenant plus de temps pour scraper le contenu
autre possibilité, as tu renseigné un header pour éviter de te faire ban en 2 secondes. si oui, parametre la provenance de la navigation
et vraiment en dernier recours, passe par puppeteer pour simuler dans un navigateur la naviguation
merci
pour le retour , j’ai cette erreur 403 sur un script de test simple où je test qu’une unique page pour récupérer son code
du coup je ne suis sur du scrapp en masse
j’ai essayé plus de 1500 user_agent différent : sur le serveur azure c’est un échec , tous me renvoie le code 403
j’ai meme essayé de surcharger le header avec d’autre option que le user agent
meme constat
en fait je bloque avec mon code , car il marche sur mon poste mais dès que je passe sur azure je n’ai que des status 403