您的位置:首页 > 编程语言 > Python开发

python使用代理服务器获取网页数据

2018-02-02 18:53 316 查看
免费代理ip网址:http://www.xicidaili.com/

多次重复获取网页时,很容易被网站的反扒封掉ip,这时可以使用代理,python使用代理非常简单,三行代码即可实现。

#使用urllib库的ProxyHandler添加代理ip地址。proxy_add为要添加的ip地址,:端口即可
proxy = urllib.request.ProxyHandler({'http':proxy_add})
#建立ip地址,其中第二个参数为固定
opener = urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
将opener设置为全局变量,这样才能接下来使用urllib.request时携带此ip
urllib.request.install_opener(opener)


完整代码如下:

#代理服务器ip地址获取网页
import urllib.request
import urllib.error
#定义函数,第一个参数为要获取的网页,第二个参数为代理的ip地址
def daili(url,proxy_add):
header = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}#添加浏览器头部
proxy = urllib.request.ProxyHandler({'http':proxy_add})#添加ip代理
opener = urllib.request.build_opener(proxy,urllib.request.HTTPHandler)#建立代理ip,第二个参数为固定
#opener.addheader = [header]
urllib.request.install_opener(opener)#将opener安装为全局,再次使用urllib.request时,均带有代理ip
try:#使用try,except获取可能发生的异常
request = urllib.request.Request(url,headers=header)#使用Request在请求时传入一些数据
except urllib.error.URLError as e:
if hasattr(e,'code'):
print(e.code)
if hasattr(e,'reason'):
print(e.reason)
data = urllib.request.urlopen(request).read()
f = open('/Users/wangxingfan/Desktop/1/12.html','wb')
f.write(data)
f.close()

url = 'http://www.163.com'
proxy_add = '218.13.11.186:8118'
daili(url,proxy_add)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: