urllib实战----使用代理服务器爬取网页(021)

一:代理服务器:

代理服务器是处于我们互联网中间的服务器,如果使用代理服务器,我们在浏览信息的时候先向代理服务器发出请求,然后由代理服务器向互联网获取信息,再返回给我们。

如果我们访问互联网络,就是直接访问,互联网服务器有信息之后就会把信息返回给用户,这时候容易获取到信息,但是如果你的ip地址在某段时间内大量的访问,则服务器就会觉得你是恶意攻击,就会把你的ip封掉。这时访问服务器时则爬取不到任何东西。ip一般来说是固定的,如果是APN拨号的话,每拨号一次换一个ip,但是也有一定的问题,拨号也要成本,并且拨号的ip地址很相近,那么人家就会把一堆ip给封掉。现在我们有代理服务器,提供你浏览网页,首先给代理服务器发送请求,代理服务器向互联网获取信息,互联网返回给代理服务器,代理服务器则会返回给我们。此时,网络的ip地址是代理服务器的,那么我们就可以用多个不同的代理服务器爬取多个网站。这样就不会被封掉ip了。

二:实战

(1)找到代理ip,http://www.xicidaili.com 中有大量的代理ip


爬取百度网页的代码:


注意:如果现实连接失败是因为ip代理服务器地址失效了,需要重新刷新获取代理ip


三:综上述代码:

from urllib import request
#设置一个自定义函数,可以在函数中实现ip代理的功能,以后可以直接调用这个功能
#ProxyHandler方法里面是一个字典,http://www.xicidaili.com 中有大量的代理ip
#互联网默认端口80
proxy_addr="119.28.112.130:3128"
url="http://www.baidu.com"
def use_proxy(url,proxy_addr):
   proxy=request.ProxyHandler({"http":proxy_addr})
   #添加代理ip
   opener=request.build_opener(proxy,request.HTTPHandler)
  #将 opener安装为全局
   request.install_opener(opener)
   request.urlopen(url).read().decode("utf-8","ignore")
   return data

#调用
data=use_proxy(url,proxy_addr)
print(len(data))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值