데이터를 크롤링하기 위해 크롤러를 작성할 때, 특히 대량의 데이터를 크롤링할 때 많은 웹사이트에 크롤링 방지 조치가 있기 때문에 IP가 차단되기 쉽고 크롤링을 계속할 수 없습니다. 이 문서에서는 이 문제를 해결하는 방법에 대한 몇 가지 대책을 요약합니다. 이러한 조치는 단독으로 사용하거나 더 나은 결과를 위해 동시에 사용할 수 있습니다.
요청 헤더의 User-Agent를 브라우저의 User-Agent로 설정하여 브라우저 액세스를 위조합니다. 예:
headers = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'} resp = requests.get(url,headers = headers)
# 比如: time.sleep(random.randint(0,3)) # 暂停0~3秒的整数秒,时间区间:[0,3] # 或: time.sleep(random.random()) # 暂停0~1秒,时间区间:[0,1)
브라우저에서 정상적으로 작동하는 경우 페이지에서는 브라우저에서 쿠키를 복사하여 다음과 같이 사용할 수 있습니다.
cookies = dict(uuid='b18f0e70-8705-470d-bc4b-09a8da617e15',UM_distinctid='15d188be71d50-013c49b12ec14a-3f73035d-100200-15d188be71ffd') resp = requests.get(url,cookies = cookies)
# 把浏览器的cookies字符串转成字典 def cookies2dict(cookies): items = cookies.split(';') d = {} for item in items: kv = item.split('=',1) k = kv[0] v = kv[1] d[k] = v return d
참고: 브라우저 쿠키를 사용하여 요청을 시작한 후 요청 빈도가 너무 빈번하면 IP는 여전히 브라우저에서 해당 수동 확인(예: 확인 이미지 클릭 등)을 수행한 다음 계속해서 쿠키를 사용하여 정상적으로 요청을 시작할 수 있습니다.
액세스에 여러 프록시 IP를 사용하여 동일한 IP가 너무 많은 요청을 실행하여 차단되는 것을 방지할 수 있습니다. 예:
proxies = {'http':'http://10.10.10.10:8765','https':'https://10.10.10.10:8765'} resp = requests.get(url,proxies = proxies) # 注:免费的代理IP可以在这个网站上获取:http://www.xicidaili.com/nn/
Python 동영상 튜토리얼】
위 내용은 Python 크롤러에 의해 IP가 차단되는 것을 방지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!