python requests库如何使用代理避免爬虫IP限制,proxy无效的解决方法,解决requests.exceptions.MissingSchema
发表于: 2018-09-26 18:56:08 | 已被阅读: 31 | 分类于: Python
python 制作爬虫获取网络资源是方便的,但是很多网站设置了反爬虫机制,最常见的就是限制 IP 频繁请求了,只要某个 IP 在单位时间内的请求次数超过一定值,网站就不再正常响应了,这时,我们的 python 爬虫就无法正常工作了。对于这种
如何使用代理(proxy)
鉴于制作 python 爬虫时,requests 库使用的较多,这里就介绍下 requests 库如何使用代理。其实真的很简单,下面是一个非常简单的使用代理的 demo:
#encoding=utf8
import requests
url = 'https://blog.popkx.com'
proxy = {
'https': 'https://95.154.110.194:51232'
}
header = {
'User-agent': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
}
if __name__ == "__main__":
res = requests.get(url, headers=header, proxies=proxy)
print res.status_code
这里用我的博客地址:
https://blog.popkx.com
在后台查询,发现访问 IP 即为我们设置的代理 IP。
可能会遇到的几点问题
python 的 requests 库使用代理是简单的,但是依然可能会遇到问题,例如:
使用代理,结果报错:requests.exceptions.MissingSchema: Proxy URLs must have explicit schemes
报错信息的意思是,
proxy = {
'https': '95.154.110.194:51232'
}
解决方法很简单,填写完整就可以了。
proxy = {
'https': 'https://95.154.110.194:51232'
}
明明设置了代理,代理却不起作用
这个问题,可能是因为设置的代理协议和要访问的网站协议不一致造成的。比如我的博客协议是
#encoding=utf8
import requests
url = 'https://blog.popkx.com'
proxy = {
'http': 'https://95.154.110.194:51232' # 协议修改为 http
}
header = {
'User-agent': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
}
if __name__ == "__main__":
res = requests.get(url, headers=header, proxies=proxy)
print res.status_code
执行脚本,在后台发现访问 IP 是我本机的 IP,而不是代理 IP。