Python常见反爬虫机制解决方案
1、使用代理
适用情况:限制IP地址情况,也可解决由于“频繁点击”而需要输入验证码登陆的情况。
这种情况最好的办法就是维护一个代理IP池,网上有很多免费的代理IP,良莠不齐,可以通过筛选找到能用的。对于“频繁点击”的情况,我们还可以通过限制爬虫访问网站的频率来避免被网站禁掉。
proxies={'http':'http://XX.XX.XX.XX:XXXX'} Requests: importrequests response=requests.get(url=url,proxies=proxies) Urllib2: importurllib2 proxy_support=urllib2.ProxyHandler(proxies) opener=urllib2.build_opener(proxy_support,urllib2.HTTPHandler) urllib2.install_opener(opener)#安装opener,此后调用urlopen()时都会使用安装过的opener对象 response=urllib2.urlopen(url)
2、时间设置
适用情况:限制频率情况。
Requests,Urllib2都可以使用time库的sleep()函数:
importtime
time.sleep(1)
3、伪装成浏览器,或者反“反盗链”
有些网站会检查你是不是真的浏览器访问,还是机器自动访问的。这种情况,加上User-Agent,表明你是浏览器访问即可。有时还
会检查是否带Referer信息还会检查你的Referer是否合法,一般再加上Referer。
headers={'User-Agent':'XXXXX'}#伪装成浏览器访问,适用于拒绝爬虫的网站 headers={'Referer':'XXXXX'} headers={'User-Agent':'XXXXX','Referer':'XXXXX'} Requests: response=requests.get(url=url,headers=headers) Urllib2: importurllib,urllib2 req=urllib2.Request(url=url,headers=headers) response=urllib2.urlopen(req)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。