遇到网站的反爬虫机制,那么咱们应该来如何应对呢?

遇到网站的反爬虫机制,那么咱们应该来如何应对呢?

 

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具备任何商业用途,版权归原做者全部,若有问题请及时联系咱们以做处理。面试

加企鹅群695185429便可免费获取,资料全在群文件里。资料能够领取包括不限于Python实战演练、PDF电子文档、面试集锦、学习资料等浏览器

一、使用代理

适用状况:限制IP地址状况,也可解决因为“频繁点击”而须要输入验证码登录的状况。网络

这种状况最好的办法就是维护一个代理IP池,网上有不少免费的代理IP,参差不齐,能够经过筛选找到能用的。对于“频繁点击”的状况,咱们还能够经过限制爬虫访问网站的频率来避免被网站禁掉。函数

proxies = {'http':'http://XX.XX.XX.XX:XXXX'}
Requests:
  import requests
  response = requests.get(url=url, proxies=proxies)
Urllib2:
  import urllib2
  proxy_support = urllib2.ProxyHandler(proxies)
  opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler)
  urllib2.install_opener(opener) # 安装opener,此后调用urlopen()时都会使用安装过的opener对象
  response = urllib2.urlopen(url)

二、时间设置

适用状况:限制频率状况。学习

Requests,Urllib2均可以使用time库的sleep()函数:网站

import time
time.sleep(1)

三、假装成浏览器,或者反“反盗链”

有些网站会检查你是否是真的浏览器访问,仍是机器自动访问的。这种状况,加上User-Agent,代表你是浏览器访问便可。有时还会检查是否带Referer信息还会检查你的Referer是否合法,通常再加上Referer。ui

headers = {'User-Agent':'XXXXX'} # 假装成浏览器访问,适用于拒绝爬虫的网站
headers = {'Referer':'XXXXX'}
headers = {'User-Agent':'XXXXX', 'Referer':'XXXXX'}
Requests:
  response = requests.get(url=url, headers=headers)
Urllib2:
  import urllib, urllib2   
  req = urllib2.Request(url=url, headers=headers)
  response = urllib2.urlopen(req)
相关文章
相关标签/搜索