2017-09-03 21 views
1

Scrapyのドキュメントを約HttpProxyMiddlewareはこのようなものですと言う:Scrapy:HttpProxyMiddlewareを書くには?

このミドルウェアはRequestオブジェクトに対してproxyメタ値を設定することにより、要求に使用するHTTP proxyを設定します。 Pythonの標準ライブラリモジュールurlliburllib2同様

が、それは以下の環境変数に従う:

http_proxy 
https_proxy 
no_proxy 

あなたはまた、http://some_proxy_server:portまたはhttp://username:[email protected]_proxy_server:portのような値に、要求ごとのメタキープロキシを設定することができます。この値は、環境変数http_proxy/https_proxyよりも優先され、また、環境変数no_proxyも無視されることに注意してください。

ドキュメント:https://doc.scrapy.org/en/latest/topics/downloader-middleware.html?highlight=Proxy#module-scrapy.downloadermiddlewares.httpproxy

しかしドキュメントには例がありません。
私はHttpProxyMiddlewareを書く方法がありません。
提案はありますか?

答えて

2

だけでこれを行います。

DOWNLOADER_MIDDLEWARES = { 
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 100 
} 

そしてyieldは、各要求をINGの間、これだけです。この

yield Request(meta={'proxy': "http://%s"%(random.choice(["IP:PORT", "IP:PORT"]))}) 

を行います!

+0

私はすでに5つのプロキシIPアドレスを持っていると仮定します。私はIPアドレスのプールを設定したい、私は何をすべきか? – zwl1619

+0

@ zwl1619あなたのSpiderファイルにIPのLISTを作成し、それぞれの要求にランダムプロキシIPを使用してください... – Umair

+0

私にコードを教えてください。私はそれをランダムにする方法を知らない。 – zwl1619

1

あなたはそれを書く必要はありません。 HttpProxyMiddlewareはすでにScrapyに存在します。

  1. することが、環境変数の設定 (例えば、コマンドラインから)

    export http_proxy="http://username:[email protected]:port" 
    
  2. ドキュメントの状態として、Scrapyはプロキシを通過するためにあなたの要求を必要と知らせるの2つの方法があります

  3. 「プロキシ」のリクエストごとにhttp://some_proxy_server:portまたはhttp://username:[email protected]_proxy_server:portのような値を設定することもできます。この値はhttp_proxyに/HTTPS_PROXY環境変数よりも優先されます、そして、それはまた無視されます覚えておいてください

    no_proxyを環境変数

    例えばsettings.py

    yield Request("http://google.com", meta={'proxy':'http://username:[email protected]_proxy_server:port'}, callback=self.some_method) 
    
+0

私は既に5つのプロキシIPアドレスを持っていると仮定します。私はIPアドレスのプールを設定したい、私は何をすべきか? – zwl1619