Pythonによるプロキシプール(Proxy Pool)システムの実現
2827 ワード
プロジェクトのコードはここにあります.https://github.com/WiseDoge/ProxyPool
言語にまたがる高性能IPエージェントプール、Python実現.
注意:プログラムを実行する前に、スナップエージェントの関数を更新してください.
実行環境 Python 3.5(Pythonのバージョンが3.5以上であることを必ず保証してください.そうしないと、非同期検査では使用できません.) Redis Redis公式サイトはWindowsのインストール版を提供していません.Windowsユーザーはここをクリックして、自分でコンパイルしたバイナリバージョン(3.2バージョン2.7 MB、VS 2015コンパイル)をダウンロードすることができます.
インストール
①直接使用
インストール依存
Windowsユーザーがlxmlライブラリをインストールできない場合は、ここをクリックしてください.
プロキシプールとAPIを開く
②取付使用
インストール
プロキシプールとAPIを開く
③バイナリパッケージの使用
Windowsユーザーはここをクリックしてこのプログラムのバイナリパッケージを取得し、直接実行することができます.
APIを使用したプロキシの取得
次のような適切な言語でプログラムコードを取得することもできます.
各モジュール機能 proxyGetter.py
爬虫モジュール class proxypool.proxyGetter.FreeProxyGetter
爬虫類は、エージェントソースのWebサイトのエージェントをキャプチャするために使用され、ユーザーはキャプチャルールを複写し、補充することができます.
schdule.py
スケジューラモジュール class proxypool.schdule.VaildityTester
非同期検出クラスは、指定されたエージェントの可用性を非同期で検出できます. class proxypool.schdule.PoolAdder
エージェント追加器は、爬虫モジュールをトリガーし、エージェントプール内のエージェントを補充し、エージェントプールのエージェント数がしきい値に達したときに停止します. class proxypool.schdule.Schedule
エージェントプールはクラスを起動し、RUN関数を実行すると、エージェントプールの内容の追加と更新を担当する2つのプロセスが作成されます.
db.py
Redisデータベース接続モジュール class proxypool.db.RedisClient
データベース操作クラスは、Redisとの接続を維持し、データベースの削除を確認します.
error.py
例外モジュール class proxypool.error.ResourceDepletionError
リソースの枯渇が異常で、すべてのキャプチャサイトから使用可能なエージェントリソースがつかめない場合は、
この例外を放出します. class proxypool.error.PoolEmptyError
エージェントプールが空です.エージェントプールが長時間空の場合、この例外が放出されます.
api.py
APIモジュールは、Webサーバを起動し、エージェントの取得機能を外部に提供します.
utils.py
ツールボックス
setting.py
設定
言語にまたがる高性能IPエージェントプール、Python実現.
注意:プログラムを実行する前に、スナップエージェントの関数を更新してください.
実行環境
インストール
①直接使用
インストール依存
$ pip install -r requirements.txt
Windowsユーザーがlxmlライブラリをインストールできない場合は、ここをクリックしてください.
プロキシプールとAPIを開く
$ cd proxypool
$ python3 run.py
②取付使用
インストール
$ cd proxypool
$ python setup.py install
プロキシプールとAPIを開く
$ proxypool_run
③バイナリパッケージの使用
Windowsユーザーはここをクリックしてこのプログラムのバイナリパッケージを取得し、直接実行することができます.
APIを使用したプロキシの取得
http://127.0.0.1:5000/
にアクセスしてホームページにアクセスし、「Welcome」が表示された場合、正常に起動したことを証明します.http://127.0.0.1:5000/get
にアクセスすると、利用可能なエージェントを取得できます.http://127.0.0.1:5000/count
にアクセスすると、エージェントプールで使用可能なエージェントの数を取得できます.次のような適切な言語でプログラムコードを取得することもできます.
import requests
from bs4 import BeautifulSoup
import lxml
def get_proxy():
r = requests.get('http://127.0.0.1:5000/get')
proxy = BeautifulSoup(r.text, "lxml").get_text()
return proxy
各モジュール機能
爬虫モジュール
爬虫類は、エージェントソースのWebサイトのエージェントをキャプチャするために使用され、ユーザーはキャプチャルールを複写し、補充することができます.
スケジューラモジュール
非同期検出クラスは、指定されたエージェントの可用性を非同期で検出できます.
エージェント追加器は、爬虫モジュールをトリガーし、エージェントプール内のエージェントを補充し、エージェントプールのエージェント数がしきい値に達したときに停止します.
エージェントプールはクラスを起動し、RUN関数を実行すると、エージェントプールの内容の追加と更新を担当する2つのプロセスが作成されます.
Redisデータベース接続モジュール
データベース操作クラスは、Redisとの接続を維持し、データベースの削除を確認します.
例外モジュール
リソースの枯渇が異常で、すべてのキャプチャサイトから使用可能なエージェントリソースがつかめない場合は、
この例外を放出します.
エージェントプールが空です.エージェントプールが長時間空の場合、この例外が放出されます.
APIモジュールは、Webサーバを起動し、エージェントの取得機能を外部に提供します.
ツールボックス
設定