ホームページ  >  記事  >  バックエンド開発  >  Python クローラーのプロキシを設定する方法

Python クローラーのプロキシを設定する方法

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼オリジナル
2019-06-13 16:58:306937ブラウズ

一部の Web サイトでは、対応するクローラー対策が行われます。たとえば、多くの Web サイトでは、一定期間内の特定の IP へのアクセス数を検出します。アクセス頻度が速すぎて正常に見えない場合は、訪問者のIPアクセスを禁止させていただく場合がございます。したがって、いくつかのプロキシ サーバーをセットアップし、時々プロキシを変更する必要がありますが、IP が禁止されていても、IP を変更してクロールを続行することはできます。

Python クローラーのプロキシを設定する方法

Python では、urllib2 の ProxyHandler を使用してプロキシ サーバーをセットアップできます。次のコードは、プロキシの使用方法を説明しています。上記 無料のオープンプロキシです。これらの無料プロキシは、いくつかのプロキシ Web サイトで収集できます。テスト後に使用できる場合は、収集してクローラーで使用します。


関連する推奨事項: 「

Python ビデオ チュートリアル

フリー エージェントの Web サイト:

西ソーンフリー エージェント

高速プロキシ 無料プロキシ

国内プロキシ IP

十分なプロキシがある場合は、それらをリストに入れて、Web サイトにアクセスするプロキシをランダムに選択できます。

import urllib2
# 构建了两个代理Handler,一个有代理IP,一个没有代理IP
httpproxy_handler = urllib2.ProxyHandler({"http" : "124.88.67.81:80"})
nullproxy_handler = urllib2.ProxyHandler({})
#定义一个代理开关
proxySwitch = True 
# 通过 urllib2.build_opener()方法使用这些代理Handler对象,创建自定义opener对象
# 根据代理开关是否打开,使用不同的代理模式
if proxySwitch:  
    opener = urllib2.build_opener(httpproxy_handler)
else:
    opener = urllib2.build_opener(nullproxy_handler)
request = urllib2.Request("http://www.baidu.com/")
# 使用opener.open()方法发送请求才使用自定义的代理,而urlopen()则不使用自定义代理。
response = opener.open(request)
# 就是将opener应用到全局,之后所有的,不管是opener.open()还是urlopen() 发送请求,都将使用自定义代理。
# urllib2.install_opener(opener)
# response = urlopen(request)
print response.read()

上記はすべて無料のプロキシですが、安定性が低く、使用できないことが多いため、現時点ではプライベート プロキシの使用を検討してください。つまり、エージェント サプライヤーからエージェントを購入します。サプライヤーは、有効なエージェントに独自のユーザー名とパスワードを提供します。具体的な使用方法は、フリー エージェントの場合と同じです。これは、次のような追加のアカウント認証です。

import urllib2
import random
proxy_list = [
    {"http" : "124.88.67.81:80"},
    {"http" : "124.88.67.81:80"},
    {"http" : "124.88.67.81:80"},
    {"http" : "124.88.67.81:80"},
    {"http" : "124.88.67.81:80"}
]
# 随机选择一个代理
proxy = random.choice(proxy_list)
# 使用选择的代理构建代理处理器对象
httpproxy_handler = urllib2.ProxyHandler(proxy)
opener = urllib2.build_opener(httpproxy_handler)
request = urllib2.Request("http://www.baidu.com/")
response = opener.open(request)
print response.read()

上記は、urllib2を使ってプロキシを設定する方法が少し面倒に思えますが、リクエストを使ってプロキシを使用する方法を見てみましょう。

無料プロキシを使用します:

# 构建具有一个私密代理IP的Handler,其中user为账户,passwd为密码
httpproxy_handler = urllib2.ProxyHandler({"http" : "user:passwd@124.88.67.81:80"})

注: 漏洩を避けるために、アカウントのパスワードを環境変数に書き込むことができます

以上がPython クローラーのプロキシを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。