经常碰到很多朋友问我,Python爬虫程序里应该怎样来使用代理IP,默认的urlopen是无法使用代理的IP的,今天就来分享一下Python爬虫怎样使用代理IP的经验。
一,这里以python3为例,首先要导入 urllib的request,然后调用ProxyHandler,它可以接受代理IP的参数。
from urllib import request
px=request.ProxyHandler()
二、接着把IP地址以字典的形式放入其中,这个IP地址是我从站大爷的短效优质代理里随便提取的一个IP。设置键为http,当然有些是https的,然后后面就是IP地址以及端口号。
st.ProxyHandler({'http':'171.11.178.189:38458'})
三、接着再用build_opener()来构建一个opener对象。
opener=request.build_opener(px)
四、然后调用构建好的opener对象里面的open方法来发生请求。实际上urlopen也是类似这样使用内部定义好的opener.open(),这里就相当于我们自己重写。
req=request.Request('网址')
res=opener.open(req)
with open('a.html','wb') as f:
f.write(res.read())
五、在使用代理IP的时候,可能会遇到一些错误,比如计算机积极拒绝之类的,这有可能是代理IP已经失效了,需要换个有效的代理IP来使用;也有可能遇到403或者407之类的错误,需要检查下授权对不对。
总之,在使用代理IP的过程中,总会遇到一些错误,需要冷静的分析,沉着的应对,最终解决问题。