• 有些网站设置了IP反爬措施,即对来访的IP地址进行监控,如果发现一个IP地址在短时间访问网站的次数太多,就将该IP地址冻结,也就是将其所在网络列入“黑名单”。此时如果继续访问该网站的网页,会看到“您的IP地址访问频率太高”的提示并拒绝访问,或者要求输入验证码才可以继续访问。本章就来讲解如何通过IP代理应对IP反爬措施这只“拦路虎”。
  • 本节先讲解如何结合Requests库使用IP代理,在8.3节将讲解如何结合Selenium库使用IP代理。

8.1.1 IP代理基础知识

  • IP地址可以理解为所用网络的身份证号码。一般来说,固定网络下的IP地址是不变的。在百度搜索“IP地址”,第一个搜索结果就是当前计算机的IP地址,如下图所示。

注意:有时搜索结果页面中显示的IP地址不一定准确,需要单击第一个搜索结果,在弹出的网页中才会显示真正的本级IP地址。

  • IP代理就是IP的地址伪装,把本机的IP地址伪装成其他IP地址。要在爬虫任务中使用IP代理,首先需要拥有IP代理地址,然后就可以通过编写代码,把自己的IP地址伪装成IP代理地址,从而躲过某些网站对于固定IP地址访问次数的限制。
  • 我们可以直接找一些IP代理地址,但是这样做既费时又费力,并不推荐。通常建议向IP代理服务提供商购买IP代理服务,这些专业的代理商一般拥有海量的IP地址,成为IP代理池。我们购买IP代理服务后,所要做的就是在爬虫代码里从IP代理池中提取IP代理地址,然后应用于向网站发起访问请求。

8.1.2 IP代理的使用

  • 了解了IP代理的基本概念后,下面来学习在爬虫代码中使用IP代理地址的基本方法,以及如何购买IP代理服务并将其应用到爬虫任务中。

1.在爬虫代码中使用IP代理地址的基本方法

  • IP代理的使用其实非常简单。如果是用Requests库完成爬虫任务,那么通过如下代码就可以应用IP代理:
import requests
proxy = 'IP代理地址'
proxies = {'http':'http://' + proxy,'https://' + proxy}
url = 'https://httpbin.org/get'
res = requests.get(url,proxies=proxies).text
  • 第2行代码中“IP代理地址”需要替换为实际使用的IP代理地址,后面会讲解如何购买和获取IP代理地址。
  • 第3行代码是配置IP代理地址的固定写法,其作用是将IP代理地址配置HTTP和HTTPS协议上。
  • 第4行代码是要访问的网址,这里设置为https://httpbin.org/get,因为这个网页能显示当前所使用的IP地址,可以帮助我们验证IP代理是否调用成功。
  • 第5行代码在访问具体网址时调用IP代理地址,其写法和之前设置headers=headers、timeout=10一样,只要在get()函数的括号里加入proxies=proxies即可。在实战中,可以把headers和timeout都加上,如下所示:
res = requests.get(url,headers=headers,timeout=10,proxies=proxies)

技巧:在浏览器中直接打开网址https://httpbin.org/get,可以看到如下图所示的界面,其中的origin对应的就是请求此页面时使用的IP地址。
(本人打开不了这个网址)

2.购买IP代理服务并获取API链接

  • IP代理服务提供商有很多,这里以“讯代理”为例讲解IP代理服务的购买和使用方法。讯代理官网地址为http://www.xdaili.cn/,IP代理服务购买地址为http://www.xdaili.cn/buyproxy,页面如下图所示,可以看到讯代理提供优质代理、混拨代理、独享代理等多种服务套餐,大家可根据自己的需求灵活选择。
  • 对于爬虫技术学习,购买优质代理即可。优质代理的优点是可以按量购买,如右图所示,比较适合初学者练习使用。如果使用量很大,可以选择按时长购买,如包日、包月或包年。
  • 下单购买套餐后,还需要获取API链接,下面来讲解具体步骤。
  • 第1步:如下图所示,
  • 第2步:如下图所示,
  • 最后点击“复制”:

3.在爬虫代码中应用购买的IP代理地址

  • 前面在浏览器中打开获取的API链接,能看到一个IP代理地址,我们可以直接将其复制、粘贴到爬虫代码中使用,但不建议这样做。原因是每次调用API链接后IP代理地址都会变化,并且每个IP代理地址还有时间限制(通常为30几分钟到几个小时)。实战中通常是在爬虫代码中房屋API链接并获取网页源代码,从中提取IP代理地址来使用。
  • 在浏览器中查看打开API链接所得网页的源代码,会发现只有两行内容,一行是IP代理地址,另一行是空行,如下图所示。
  • 因此,获取到网页源代码后,还要利用strip()函数清除其中的换行符合空格,才能得到我们需要的IP代理地址。代码如下:
proxy = requests.get('讯代理API链接').text
proxy = proxy.strip() #这一步很重要,因为要清除换行符等多余的字符
  • 完整代码如下:
import requests
proxy = requests.get('http://api.xdaili.cn/xdaili-api//greatRecharge/getGreatIp?spiderId=1bfff22283ec488bacc302a679a0a651&orderno=YZ20224181764ow5pXx&returnType=1&count=1').text
proxy = proxy.strip() #这一步很重要,因为要清除换行符等多余的字符
#proxies = {'http':'http://' + proxy,'https://' + proxy}
proxies = {"http": "http://"+proxy, "https": "https://"+proxy}
url = 'http://httpbin.org/get'
res = requests.get(url,proxies=proxies).text
print(res)
  • 运行接结果如下,其中origin对应的值就是此时使用的IP代理地址。
{"args": {}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Cache-Control": "max-age=259200", "Host": "httpbin.org", "User-Agent": "python-requests/2.27.1", "X-Amzn-Trace-Id": "Root=1-625e5577-753ec71749f324a65d9af91d"}, "origin": "120.42.132.40", "url": "http://httpbin.org/get"

注意:IP代理地址的调用频率不要太高,两次调用的时间间隔不要短于5秒,否则讯代理会报错。一个有效的IP代理地址通常可以使用30分钟以上,所有不要频繁切换IP代理地址。8.2.3节会讲解如何根据需要切换IP代理地址。

  • 至此,结合Requests库使用IP代理的知识就讲解完毕了,实际应用时只需把代码中的网址http://httpbin.org/get换成想要访问的网址。下一节将利用IP代理爬取微信公众号文章。

第8章 IP代理使用技巧与实战(8.1 结合Requests库使用IP代理)相关推荐

  1. python的requests库的添加代理_python爬虫之requests库使用代理

    python爬虫之requests库使用代理 发布时间:2020-03-25 17:00:54 来源:亿速云 阅读:110 作者:小新 今天小编分享的是关于python爬虫的requests库使用代理 ...

  2. requests库之IP归属地查询

    import requests url = "http://m.ip138.com/ip.asp?ip="def getIPAddressa(ip):try:req = reque ...

  3. 通过python的requests库和socks代理调用接口API(接码平台)

    1.找到合适的接码平台 2.打开其平台API 3.查看其请求参数 代码 import requests import socket import socks socks.set_default_pro ...

  4. 用google突破图书馆入口IP限制小技巧

    用google突破图书馆入口IP限制小技巧 很多图书馆都要注册或要本地IP才能浏览或下载图书,有没有另类的快速办法能快速突破图书馆的入口,能随意地下载图书呢? 希望大家在GOOGLE里试试这个:&qu ...

  5. python爬虫cookie池 与ip绑定_Python爬虫防封ip的一些技巧

    在编写爬虫爬取数据的时候,因为很多网站都有反爬虫措施,所以很容易被封IP,就不能继续爬了.在爬取大数据量的数据时更是瑟瑟发抖,时刻担心着下一秒IP可能就被封了. 本文就如何解决这个问题总结出一些应对措 ...

  6. 4.10 第十三章:Linux系统管理技巧

    第十三章:Linux系统管理技巧 13.1监控系统的状态 13.1.1使用w命令查看当前系统的负载 13.1.2用vmstat命令监控系统的状态 13.1.3用top命令显示进程所占的系统资源 13. ...

  7. python 代理ip验证_python爬虫成长之路(二):抓取代理IP并多线程验证

    上回说到,突破反爬虫限制的方法之一就是多用几个代理IP,但前提是我们得拥有有效的代理IP,下面我们来介绍抓取代理IP并多线程快速验证其有效性的过程. 一.抓取代理IP 提供免费代理IP的网站还挺多的, ...

  8. Android群英传笔记——第四章:ListView使用技巧

    Android群英传笔记--第四章:ListView使用技巧 近期也是比較迷茫.可是有一点点还是要坚持的,就是学习了.近期离职了,今天也是继续温习第四章ListView,也拖了事实上也挺久的了,lis ...

  9. 实战项目一:爬取西刺代理(获取代理IP)

    爬虫的学习就是与反扒措施.反扒系统做斗争的一个过程,而使用代理IP是我们重要的防反扒的重要措施,代理IP的来源有两种一是你花钱去购买商家会给你提供一个接口你直接调用就可以了,二是自己在网上爬取高效IP ...

最新文章

  1. 有赞11·11:全链路压测方案设计与实施详解
  2. 两道概率题-供大家周末把玩
  3. 洛谷 P2513 [HAOI2009]逆序对数列
  4. android数据持久化存储(2)
  5. 使Tomcat可以下载中文文件
  6. 金庸笔下的良好代码风格
  7. VS模板导入导出 提高工作效率
  8. Android中什么是Dex文件
  9. 杂文笔记(一):博弈论在网络安全中的应用
  10. adjacent angle_adjacent angle是什么意思_adjacent angle怎么读_adjacent angle翻译_用法_发音_词组_同反义词_邻角-新东方在线英语词典...
  11. 浏览器(2):自制Chromium内核浏览器,自动统计CSDN社区打卡记录
  12. C# PDF附件生成
  13. 01_CSS简介.html
  14. 如何知晓计算机的字长,计算机字长是什么意思,如何判断指令格式是单字长还是双字长...
  15. 麦克风阵列之一阶差分麦克风阵列
  16. mpv播放器旋转视频
  17. 企业数字化办公利器——华为云桌面Workspace
  18. 研究IdentityServer4遇到天坑signin-oidc报错
  19. matlab数据采集柜,MATLAB数据采集工具箱
  20. 树莓派4B安装联想LJ2605D打印机驱动

热门文章

  1. css中vh/vw与%的区别
  2. Mac M1芯片 安装vmware 和ubuntu 以及换源全过程
  3. 小样本点云深度学习库_基于点云深度学习的点云数据集制作系统及方法与流程...
  4. 魔方(13)齿轮魔方、五阶齿轮魔方(待续)
  5. EndNote 20
  6. Black-Scholes 期权定价公式的来龙去脉
  7. 我和小米的10年,从米粉到米黑,再到米粉的故事...
  8. 美食分享平台有哪些?网友最喜欢的三大美食分享平台盘点
  9. 抖音常见的几种违规行为,抖音新手应该注意防范:国仁楠哥
  10. 如何正确地给固态硬盘(SSD)分区