Heim  >  Artikel  >  Backend-Entwicklung  >  So richten Sie einen Proxy für den Python-Crawler ein

So richten Sie einen Proxy für den Python-Crawler ein

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼Original
2019-06-13 16:58:306952Durchsuche

Einige Websites verfügen über entsprechende Anti-Crawler-Maßnahmen. Viele Websites erkennen beispielsweise die Anzahl der Besuche einer bestimmten IP in einem bestimmten Zeitraum, wenn die Besuchshäufigkeit zu hoch ist und nicht wie ein normaler Besucher aussieht , es kann den IP-Besuch verbieten. Daher müssen wir von Zeit zu Zeit einige Proxyserver einrichten und den Proxy ändern. Auch wenn die IP gesperrt ist, können Sie die IP trotzdem ändern und mit dem Crawlen fortfahren.

So richten Sie einen Proxy für den Python-Crawler ein

In Python können Sie den ProxyHandler in urllib2 verwenden, um einen Proxyserver einzurichten. Der folgende Code erklärt, wie der Proxy verwendet wird:

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()

Verwendet oben Es handelt sich um einen kostenlosen offenen Proxy. Wenn er nach dem Testen verwendet werden kann, werden wir ihn sammeln und auf dem Crawler verwenden.

Verwandte Empfehlungen: „Python-Video-Tutorial

Kostenlose Proxy-Website:

Western Spurs kostenloser Proxy

Schneller Proxy, kostenloser Proxy

Nationale Proxy-IP

Wenn Sie über genügend Proxys verfügen, können Sie diese in eine Liste aufnehmen und zufällig einen Proxy auswählen, um auf die Website zuzugreifen. Wie folgt:

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()

Die oben genannten sind alle kostenlosen Proxys, die nicht sehr stabil sind und oft nicht verwendet werden können. Zu diesem Zeitpunkt können Sie die Verwendung eines privaten Proxys in Betracht ziehen. Das heißt, der Anbieter stellt einem gültigen Agenten seinen eigenen Benutzernamen und sein eigenes Passwort zur Verfügung. Die spezifische Verwendung ist die gleiche wie bei einem kostenlosen Agenten, wie folgt.

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

Die oben beschriebene Methode zum Einrichten eines Proxys mit urllib2 scheint etwas mühsam zu sein. Sehen wir uns an, wie man Anforderungen zur Verwendung des Proxys verwendet.

Kostenlosen Proxy verwenden:

import requests
# 如果代理需要使用HTTP Basic Auth,可以使用下面这种格式:
proxy = { "http": "mr_mao_hacker:sffqry9r@61.158.163.130:16816" }
response = requests.get("http://www.baidu.com", proxies = proxy)
print response.text

Hinweis: Sie können das Kontopasswort in Umgebungsvariablen schreiben, um Lecks zu vermeiden

Das obige ist der detaillierte Inhalt vonSo richten Sie einen Proxy für den Python-Crawler ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn