일부 웹사이트에는 해당하는 크롤러 방지 조치가 있습니다. 예를 들어, 많은 웹사이트는 특정 기간 동안 특정 IP에 대한 방문 횟수를 감지합니다. 방문 빈도가 너무 빠르고 정상적인 방문자처럼 보이지 않는 경우. 이 IP에 대한 액세스를 금지할 수 있습니다. 따라서 프록시 서버를 설정하고 가끔씩 프록시를 변경해야 합니다. IP가 금지된 경우에도 IP를 변경하고 계속 크롤링할 수 있습니다.
Python에서는 urllib2의 ProxyHandler를 사용하여 프록시 서버를 설정할 수 있습니다. 다음 코드는 프록시 사용 방법을 설명합니다.
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()
위는 일부 프록시에서 수집할 수 있는 무료 개방형 프록시입니다. 웹사이트 테스트 후 이러한 무료 프록시를 사용할 수 있으면 크롤러에서 수집되어 사용됩니다.
관련 추천: "python 비디오 튜토리얼"
무료 프록시 웹사이트:
Western Thorns 무료 프록시
빠른 프록시 무료 프록시
National 프록시 IP
프록시가 충분하면 넣을 수 있습니다. 목록에서 무작위로 프록시를 선택하여 웹사이트에 접속하세요.
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()
위 내용은 모두 무료 프록시이므로 안정성이 좋지 않아 사용할 수 없는 경우가 많습니다. 이때 개인 프록시 사용을 고려해 볼 수 있습니다. 즉, 에이전트 공급자로부터 에이전트를 구매하면 공급자는 고유한 사용자 이름과 비밀번호를 제공합니다. 이는 다음과 같은 추가 계정 인증입니다.
# 构建具有一个私密代理IP的Handler,其中user为账户,passwd为密码 httpproxy_handler = urllib2.ProxyHandler({"http" : "user:passwd@124.88.67.81:80"})
위는 urllib2를 사용하여 에이전트 메소드를 설정하는 방법인데, 프록시를 사용하기 위해 요청을 어떻게 사용하는지 살펴보겠습니다.
무료 프록시 사용:
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
참고: 유출을 방지하기 위해 환경 변수에 계정 비밀번호를 쓸 수 있습니다
위 내용은 Python 크롤러용 프록시를 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!