J'ai écrit un script dans Scrapy en combinaison avec Selenium pour faire des demandes proxiées à l'aide de proxies nouvellement générées par Mon script suivant fonctionne de manière incohérente car lorsque la fonction J'ai écrit jusqu'à présent : p> get_proxies () code> méthode. J'ai utilisé des demandes Module pour récupérer les proxies afin de les réutiliser dans le script. Ce que j'essaie de faire est d'analyser tous les liens post de son Page d'atterrissage puis récupérer le nom de chaque Titre de ce qui est page cible < / a>.
get_random_proxy code> produit un proxy utilisable, alors je reçois mon script fonctionnant autrement, il échoue de manière miséreuse. p>
3 Réponses :
Comme vous avez étiqueté selenium , en utilisant uniquement Selenium Vous pouvez faire des demandes proxiées à l'aide de la nouvelle activité Proxies qui sont répertoriées dans le Liste de proxy gratuite à l'aide de la solution suivante:
note forte>: ce programme invoquera les proxies de la liste de proxy em> un par un jusqu'à une connexion proxée réussie et vérifiée via vérification de proxy em > page de https://www.whatmyip.com/ code> p> blockQuote>
bloc de code: p>
XXX PRE> LI> Sortie de la console: P>
XXX PRE> LI> ul> p>
La question ne concerne pas comment je peux utiliser la rotation des mandataires lors de la tentative de sélénium (je le sais déjà); Il s'agit plutôt de savoir comment je peux faire la même chose lorsqu'il est combiné avec un skérapie. J'espère que tu m'as eu @debanjanb. Merci.
@ robots.txt Comme vous avez tagué sélénium d'où j'ai essayé de construire une solution canonique pour vous aider à sortir purement basé sur < Un href = "https://docs.eleniumhq.org/" rel = "nOfollow noreferrer"> sélénium . Cependant, Scrapy i> est basé sur demandes i> et peut effectuer le même emploi de la même manière.
Vous pouvez essayer d'utiliser PROXY SCRAPY-PROXY
Voici Une autre référence qui pourrait vous aider à vous aider: https://www.scrapehero.com/how-to-rotate-proxies-and-ip-addresses-uppython-3/ P>
Vérifiez la partie: P >
DOWNLOADER_MIDDLEWARES = { 'rotating_proxies.middlewares.RotatingProxyMiddleware': 610, } ROTATING_PROXY_LIST = [ 'proxy1.com:8000', 'proxy2.com:8031', # ... ]
Vous pouvez utiliser la bibliothèque CODE> Demandes CODE> lors de la sélection d'un proxy aléatoire pour vérifier si le proxy fonctionne ou non. Boucle à travers les proxies:
pop code>) un proxy aléatoire li>
- Vérifiez avec
Demandes CODE>, si réussie, renvoyez le proxy autrement aller à l'étape 1 fort> li>
ol> changez votre get_random_proxy code> à quelque chose comme ceci: p> xxx pré> si get_random_proxy code> retourne Aucun code>, cela signifie que rien des proxies ne fonctionne. Dans ce cas, omettez le - argument proxy-serveur code>. P> xxx pré> p>
get_random_proxy () code> ne manquera jamais de produire du proxy sauf s'il y a une erreur de connexion. Je l'ai testé plusieurs fois. Vous devez travailler sur un autre angle pour résoudre le problème @Mezba メ. Merci.
@ robots.txt Vous voulez vous assurer que vous obtenez un proxy de travail, n'est-ce pas que le but? get_random_proxy code> prend en charge cela en testant des proxies aléatoires. Tant que
requests.get code> fonctionne à l'aide d'un proxy, il ne faut pas échouer. Je ne suis pas vraiment sûr de ce que vous voulez vraiment ici.
Je t'ai tort @Mezba メ. Votre solution semble fonctionner. Recevez-vous une fois que j'ai fini de vérifier. Merci.
Le problème réside dans votre
CrawlerProcess Code>,
Crowl () Code> Méthode Vous devez encapsuler certains des appels internes informatiques avec
essayer code> et
sauf code > Manquer cette partie du code de votre question, il est difficile de vous aider.
Votre code utilise un schéma et un sélénium sauf que Scrapy ne fait absolument rien ici. Vous devriez vous tenir au sélénium ou à la session ou à la recherche sur les intégrations de sélénium pour le skérapie. Pour les addons de gestion de proxy Scrapy, jetez un coup d'œil à PROXIES SCRAPY-ROTING-PROXIES pour sélénium Commutation des proxies pendant la période d'exécution est un peu plus compliquée.
En cas d'utilisation de la rotation des mandatations de Scrapy, je trouve Cette réponse Deuxièmement, elle ne dépend pas des advons et Peut être exécuté comme il s'agit de @granitosaurus.