【python】【爬虫】urllib爬虫使用代理服务器,解决IP限制问题

什么是代理服务器,为什么要用

代理服务器是一个在用户和网页服务器中间的一个服务器。用户先借助代理服务器访问网页,网页得到的是代理服务器的IP,资源经过代理服务器返回到用户,即代理用户获得网络信息

若使用用户服务器通过爬虫访问网页服务器,容易因为同一个IP在短时间内多次访问某一网页服务器而被发现是爬虫而被禁止。使用代理服务器,解决IP限制的问题

怎么做

首先是需要一个代理服务器,以前的xicidaili.com上不去了,现在可用xiladaili.com,在上面随意找一个IP地址和其提供的端口。注意提供的代理IP可能是失效的

使用ProxyHandler()方法设置代理IP,向该方法传入一个字典(记录代理的IP地址),这里字典的属性值可用形参代替

把代理IP用opener对象设置为HTTPHandler,声明该opener对象为全局方便使用urlopen()发送请求

import urllib.request

def use_proxy(url,proxy_ip):
    # 代理IP对象
    proxy = urllib.request.ProxyHandler({"http":proxy_ip})
    # 建立opener对象,给该opener添加代理IP
    # 参数2:设置为HTTPHandler【固定不可改】
    opener = urllib.request.build_opener(proxy, urllib.request.HTTPHandler)
    # 安装为全局opener()
    urllib.request.install_opener(opener)
    data = urllib.request.urlopen(url).read().decode("utf-8","ignore")
    return data

proxy_ip="49.75.59.242:3128"
url="http://www.baidu.com"
use_proxy(url, proxy_id)    # 调用函数,传入参数
print(len(data))

改进

把proxy_ip设置为一个列表的形式,用for i in proxy_id循环逐个调用其中的代理IP,总有一个IP是可用的,同理也可以避免每次换IP需要改参数的问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值