首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python爬虫使用代理IP的实现

使用爬虫时,如果目标网站对访问的速度或次数要求较高,那么你的 IP 就很容易被封掉,也就意味着在一段时间内无法再进行下一步的工作。这时候代理 IP 能够给我们带来很大的便利,不管网站怎么封,只要能找到一个新的代理 IP 就可以继续进行下一步的研究。

目前很多网站都提供了一些免费的代理 IP 供我们使用,当然付费的会更好用一点。本文除了展示怎样使用代理 IP,也正好体验一下前面文章中搭建的代理 IP 池,不知道的可以点击这里:Python搭建代理IP池(一)- 获取 IP。只要访问代理池提供的接口就可以获取到代理 IP 了,接下来就看怎样使用吧!

测试的网址是:http://www.jshk.com.cn/,访问该站点可以得到请求的一些相关信息,其中 origin 字段就是客户端的 IP,根据它来判断代理是否设置成功,也就是是否成功伪装了IP

# 获取IP

ip_response =urllib.request.urlopen("http://localhost:5555/random")

ip =ip_response.read().decode('utf-8')

proxy_handler =ProxyHandler({

'http': 'http://'+ip,

'https': 'https://'+ip

})

opener =build_opener(proxy_handler)

try:

response =opener.open('http://httpbin.org/get')

print(response.read().decode('utf-8'))

exceptURLError as e:

print(e.reason)

运行结果:

{

"args": {},

"headers": {

"Accept-Encoding": "identity",

"Host": "httpbin.org",

"User-Agent": "Python-urllib/3.7"

},

"origin": "108.61.201.231, 108.61.201.231",

"url": "https://httpbin.org/get"

}

Urllib 使用 ProxyHandler 设置代理,参数是字典类型,键名为协议类型,键值是代理,代理前面需要加上协议,即 http 或 https,当请求的链接是 http 协议的时候,它会调用 http 代理,当请求的链接是 https 协议的时候,它会调用https代理,所以此处生效的代理是:http://108.61.201.231 和 https://108.61.201.231

ProxyHandler 对象创建之后,再利用 build_opener() 方法传入该对象来创建一个 Opener,这样就相当于此 Opener 已经设置好代理了,直接调用它的 open() 方法即可使用此代理访问链接

Requests

Requests 的代理设置只需要传入 proxies 参数:

importrequests

# 获取IP

ip_response =requests.get("http://localhost:5555/random")

ip =ip_response.text

proxies ={

'http': 'http://'+ip,

'https': 'https://'+ip,

}

运行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多关注华科云商

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OxKn8In_l4m_kCt2b_EcqLng0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券