Méthode de mise en œuvre du pool IP de l'agent d'exploration Python

高洛峰
Libérer: 2017-02-11 13:09:46
original
2649 Les gens l'ont consulté

En travaillant comme robot d'exploration du Web profond distribué dans l'entreprise, nous avons construit un service de pool de proxy stable pour fournir des proxys efficaces à des milliers de robots d'exploration, garantissant que chaque robot d'exploration obtient une adresse IP proxy valide pour le site Web correspondant, garantissant ainsi que le robot d'exploration Il fonctionne rapidement et de manière stable, je souhaite donc utiliser des ressources gratuites pour créer un service de pool de proxy simple.

En travaillant en tant que robot d'exploration du Web profond distribué dans l'entreprise, nous avons construit un service de pool de proxy stable pour fournir des proxys efficaces à des milliers de robots d'exploration, garantissant que chaque robot d'exploration obtient une adresse IP proxy valide pour le site Web correspondant. garantissant ainsi le fonctionnement rapide et stable du robot. Bien entendu, les activités réalisées dans l'entreprise ne peuvent pas être open source. Cependant, je ressens des démangeaisons pendant mon temps libre, je souhaite donc utiliser des ressources gratuites pour créer un service de pool de proxy simple.

1. Question

D'où vient l'IP du proxy ?
Quand j'ai appris l'exploration par moi-même, je n'avais pas d'adresse IP de proxy, je suis donc allé sur des sites Web avec des proxys gratuits tels que Xisha et Quick Proxy pour explorer. Il existe encore des proxys qui peuvent être utilisés. Bien entendu, si vous disposez d’une meilleure interface proxy, vous pouvez également la connecter vous-même. La collecte des proxys gratuits est également très simple, rien de plus que : visiter la page page —> extraction régulière/xpath —> sauvegarder

Comment s'assurer de la qualité du proxy ?
Il est certain que la plupart des IP proxy gratuites ne peuvent pas être utilisées, sinon pourquoi d'autres fourniraient-elles des IP payantes (mais le fait est que les IP payantes de nombreux agents ne sont pas stables et beaucoup d'entre elles ne peuvent pas être utilisées). Par conséquent, l'adresse IP du proxy collectée ne peut pas être utilisée directement. Vous pouvez écrire un programme de détection pour utiliser en permanence ces proxys pour accéder à un site Web stable afin de voir s'il peut être utilisé normalement. Ce processus peut être multithread ou asynchrone, car la détection des proxys est un processus lent.

Comment stocker les proxys collectés ?
Ici, je dois recommander une base de données NoSQL SSDB hautes performances qui prend en charge plusieurs structures de données pour le proxy Redis. Prend en charge les données de file d'attente, de hachage, d'ensemble, de paires k-v et de niveau T. C'est un très bon outil de stockage intermédiaire pour les robots distribués.

Comment faciliter l'utilisation de ces proxys par les robots d'exploration ?
La réponse est définitivement d'en faire un service. Python a tellement de frameworks Web. Il suffit d'en choisir un et d'écrire une API que le robot d'exploration pourra appeler. Cela présente de nombreux avantages. Par exemple, lorsque le robot d'exploration constate que l'agent ne peut pas être utilisé, il peut supprimer activement l'adresse IP de l'agent via l'API. Lorsque le robot d'exploration constate que l'adresse IP du pool d'agents n'est pas suffisante, il peut actualiser activement le pool d'agents. . C'est plus fiable que le programme de détection.

2. Conception du pool de proxy

Le pool de proxy se compose de quatre parties :

ProxyGetter :
Interface d'acquisition de proxy, il y en a actuellement 5. les sources proxy gratuites, à chaque appel, les derniers proxys de ces 5 sites Web seront capturés et mis dans la base de données. Vous pouvez ajouter des interfaces d'acquisition de proxy supplémentaires par vous-même

DB :
est utilisé pour. stocker les adresses IP proxy. Il n’est disponible que pour le moment. Quant à la raison pour laquelle vous choisissez SSDB, vous pouvez vous référer à cet article. Personnellement, je pense que SSDB est une bonne alternative à Redis. Si vous n'avez pas utilisé SSDB, vous pouvez vous y référer ici ; Planification :

Les utilisateurs de tâches planifiées vérifient régulièrement la disponibilité des agents dans la base de données et suppriment les agents indisponibles. Dans le même temps, il prendra également l'initiative d'obtenir le dernier proxy via ProxyGetter et de le mettre dans la base de données


ProxyApi :

L'interface externe du pool de proxy étant donné que la fonction de pool de proxy est disponible. relativement simple maintenant, j'ai passé deux heures à regarder Flask, j'étais content. La décision a été prise avec Flask. La fonction consiste à fournir des interfaces get/delete/refresh et autres pour les robots d'exploration afin de faciliter leur utilisation directe.


Méthode de mise en œuvre du pool IP de lagent dexploration Python[HTML_REMOVED] Conception

3. Module Code

Structure de données de haut niveau en Python, dynamique. Les types et la liaison dynamique le rendent très approprié pour le développement rapide d'applications, et convient également comme langage de liaison pour connecter des composants logiciels existants. Il est également très simple d'utiliser Python pour créer ce pool d'IP proxy. Le code est divisé en 6 modules :

Api : code lié à l'interface api L'api est actuellement implémentée par Flask, et le code est également très simple. simple. La demande du client est transmise à Flask et Flask appelle l'implémentation dans ProxyManager, y compris

DB : code lié à la base de données. Le code est implémenté en mode usine pour faciliter l'expansion d'autres types de bases de données à l'avenir ; get/delete/refresh/get_all

Manager :

et d'autres classes d'implémentation spécifiques d'interfaces Actuellement, le pool de proxy est uniquement responsable de la gestion du proxy. . Il pourrait y avoir plus de fonctions à l'avenir, telles que le proxy et la liaison des robots, la liaison des agents et des comptes, etc.

ProxyGetter : codes pertinents obtenus par les agents. Actuellement, cinq sites Web, dont un agent rapide, un agent. 66, votre agent, l'agent Xixi et guobanjia sont capturés. Proxy gratuits. Après tests, ces cinq sites Web n'ont que soixante ou soixante-dix proxys disponibles qui sont mis à jour quotidiennement. Bien sûr, ils prennent également en charge leur propre extension de l'interface proxy ; get/delete/refresh/get_allPlanification : le code lié aux tâches planifiées implémente désormais uniquement le code d'actualisation planifiée et vérifie les agents disponibles, en utilisant la méthode multi-processus ;

Util : stocke certaines méthodes ou fonctions publiques du module, notamment GetConfig : une classe qui lit le fichier de configuration config.ini, ConfigParse : une classe de réécriture intégrée de ConfigParser pour le rendre sensible à la casse, Singleton : implémente singleton, LazyProperty : implémente le calcul paresseux des attributs de classe. Etc.;

Autres fichiers : Fichier de configuration : Config.ini, configuration de la base de données et configuration de l'interface d'acquisition de proxy. Vous pouvez ajouter une nouvelle méthode d'acquisition de proxy dans GetFreeProxy et l'enregistrer dans Config.ini pour l'utiliser ;

4. Installation

Code de téléchargement :

git clone git@github.com:jhao104/proxy_pool.git

或者直接到https://github.com/jhao104/proxy_pool 下载zip文件
Copier après la connexion

Installer les dépendances :

pip install -r requirements.txt
Copier après la connexion

Démarrer :

需要分别启动定时任务和api
到Config.ini中配置你的SSDB

到Schedule目录下:
>>>python ProxyRefreshSchedule.py

到Api目录下:
>>>python ProxyApi.py
Copier après la connexion

Utiliser

Une fois la tâche planifiée démarrée, tous les agents seront récupérés dans la base de données via la méthode d'acquisition d'agent et vérifiés. Par la suite, elle sera répétée toutes les 20 minutes par défaut. Environ une minute ou deux après le démarrage de la tâche planifiée, vous pouvez voir les proxys disponibles actualisés dans SSDB :

Méthode de mise en œuvre du pool IP de lagent dexploration Python

Vous pouvez l'utiliser dans le navigateur après avoir démarré ProxyApi.py. l'interface récupère le proxy, voici la capture d'écran dans le navigateur :

page d'index :


Méthode de mise en œuvre du pool IP de lagent dexploration Python

obtenir la page :


Méthode de mise en œuvre du pool IP de lagent dexploration Python

Page get_all :


Méthode de mise en œuvre du pool IP de lagent dexploration Python

Utilisé dans les robots d'exploration Si vous souhaitez l'utiliser dans le code du robot, vous pouvez encapsuler cette API dans un fichier. fonction et utilisez-la directement, par exemple :

import requests

def get_proxy():
  return requests.get("http://127.0.0.1:5000/get/").content

def delete_proxy(proxy):
  requests.get("http://127.0.0.1:5000/delete/?proxy={}".format(proxy))

# your spider code

def spider():
  # ....
  requests.get('https://www.example.com', proxies={"http": "http://{}".format(get_proxy)})
  # ....
Copier après la connexion

6. Enfin

le temps est court, les fonctions et le code sont relativement rudimentaires , et je l'améliorerai quand j'aurai le temps dans le futur. Si vous l'aimez, donnez-lui une étoile sur github. reconnaissant!

Pour plus d'articles sur les méthodes d'implémentation du pool IP de l'agent d'exploration Python, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal