范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

python培训之快速构建Python爬虫IP代理池服务分享

  在公司做分布式深网爬虫,搭建了一套稳定的代理池服务,为上千个爬虫提供有效的代理,保证各个爬虫拿到的都是对应网站有效的代理IP,从而保证爬虫快速稳定的运行,当然在公司做的东西不能开源出来。不过呢,闲暇时间手痒,所以就想利用一些免费的资源搞一个简单的代理池服务。
  1、问题
  代理IP从何而来?
  刚自学爬虫的时候没有代理IP就去西刺、快代理之类有免费代理的网站去爬,还是有个别代理能用。当然,如果你有更好的代理接口也可以自己接入。
  免费代理的采集也很简单,无非就是:访问页面页面—>正则/xpath提取—>保存
  如何保证代理质量?
  可以肯定免费的代理IP大部分都是不能用的,不然别人为什么还提供付费的(不过事实是很多代理商的付费IP也不稳定,也有很多是不能用)。所以采集回来的代理IP不能直接使用,可以写检测程序不断的去用这些代理访问一个稳定的网站,看是否可以正常使用。这个过程可以使用多线程或异步的方式,因为检测代理是个很慢的过程。
  采集回来的代理如何存储?
  这里不得不推荐一个高性能支持多种数据结构的NoSQL数据库SSDB,用于代理Redis。支持队列、hash、set、k-v对,支持T级别数据。是做分布式爬虫很好中间存储工具。
  如何让爬虫更简单的使用这些代理?
  答案肯定是做成服务咯,python有这么多的web框架,随便拿一个来写个api供爬虫调用。这样有很多好处,比如:当爬虫发现代理不能使用可以主动通过api去delete代理IP,当爬虫发现代理池IP不够用时可以主动去refresh代理池。这样比检测程序更加靠谱。
  2、代理池设计
  代理池由四部分组成:
  ProxyGetter:
  代理获取接口,目前有5个免费代理源,每调用一次就会抓取这个5个网站的最新代理放入DB,可自行添加额外的代理获取接口;
  DB:
  用于存放代理IP,现在暂时只支持SSDB。至于为什么选择SSDB,大家可以参考这篇文章,个人觉得SSDB是个不错的Redis替代方案,如果你没有用过SSDB,安装起来也很简单,可以参考这里;
  Schedule:
  计划任务用户定时去检测DB中的代理可用性,删除不可用的代理。同时也会主动通过ProxyGetter去获取最新代理放入DB;
  ProxyApi:
  代理池的外部接口,由于现在这么代理池功能比较简单,花两个小时看了下Flask,愉快的决定用Flask搞定。功能是给爬虫提供get/delete/refresh等接口,方便爬虫直接使用。
  3、代码模块
  Python中高层次的数据结构,动态类型和动态绑定,使得它非常适合于快速应用开发,也适合于作为胶水语言连接已有的软件部件。用Python来搞这个代理IP池也很简单,代码分为6个模块:
  Api:
  api接口相关代码,目前api是由Flask实现,代码也非常简单。客户端请求传给Flask,Flask调用ProxyManager中的实现,包括get/delete/refresh/get_all;
  DB:
  数据库相关代码,目前数据库是采用SSDB。代码用工厂模式实现,方便日后扩展其他类型数据库;
  Manager:
  get/delete/refresh/get_all等接口的具体实现类,目前代理池只负责管理proxy,日后可能会有更多功能,比如代理和爬虫的绑定,代理和账号的绑定等等;
  ProxyGetter:
  代理获取的相关代码,目前抓取了快代理、代理66、有代理、西刺代理、guobanjia这个五个网站的免费代理,经测试这个5个网站每天更新的可用代理只有六七十个,当然也支持自己扩展代理接口;
  Schedule:
  定时任务相关代码,现在只是实现定时去刷新代码,并验证可用代理,采用多进程方式;
  Util:
  存放一些公共的模块方法或函数,包含GetConfig:读取配置文件config.ini的类,ConfigParse:集成重写ConfigParser的类,使其对大小写敏感,Singleton:实现单例,LazyProperty:实现类属性惰性计算。等等;
  其他文件:
  配置文件:Config.ini,数据库配置和代理获取接口配置,可以在GetFreeProxy中添加新的代理获取方法,并在Config.ini中注册即可使用;
  4、安装
  安装依赖:
  pipinstall-rrequirements.txt
  pipinstall-rrequirements.txt
  启动:
  需要分别启动定时任务和api
  到Config.ini中配置你的SSDB
  到Schedule目录下:
  >>>pythonProxyRefreshSchedule.py
  到Api目录下:
  >>>pythonProxyApi.py
  需要分别启动定时任务和api
  到Config.ini中配置你的SSDB
  到Schedule目录下:
  >>>pythonProxyRefreshSchedule.py
  到Api目录下:
  >>>pythonProxyApi.py
  5、使用
  定时任务启动后,会通过代理获取方法fetch所有代理放入数据库并验证。此后默认每20分钟会重复执行一次。定时任务启动大概一两分钟后,便可在SSDB中看到刷新出来的可用的代理:
  启动ProxyApi.py后即可在浏览器中使用接口获取代理,一下是浏览器中的截图:
  get页面:
  get_all页面:
  爬虫中使用,如果要在爬虫代码中使用的话,可以将此api封装成函数直接使用,例如:
  importrequests
  defget_proxy():
  returnrequests.get("http://127.0.0.1:5000/get/").content
  defdelete_proxy(proxy):
  requests.get("http://127.0.0.1:5000/delete/?proxy={}".format(proxy))
  #yourspidercode
  defspider():
  #....
  requests.get("https://www.codingke.com",proxies={"http":"http://{}".format(get_proxy)})
  #....
  以上就是关于扣丁学堂Python培训之快速构建Python爬虫IP代理池服务的详细介绍,希望对大家有所帮助。最后想要了解更多关于Python发展前景趋势,请关注扣丁学堂python培训官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供最新的Python视频教程系统,通过千锋扣丁学堂金牌讲师在线录制的Python视频教程课程,让你快速掌握Python从入门到精通开发实战技能。扣丁学堂Python技术交流群:816572891。

多年旧电脑CPU太次,教你一招让它焕然一新按住WindowsR,打开运行输入msconfig,打开系统配置点击引导,选择高级选项勾选处理器个数,选择最大个数(每个人的电脑配置不同,有的电脑最大不止是8,图片仅供参考)确定后40多年前的日本索尼,能把多少收音机公司按在地上摩擦?一最可靠的消费电子产品我很幸运地得到了一台索尼ICF1200长波中波短波和调频四波段收音机。它还能接收电台信号,不过,音量和音调控制部件和波段转换开关有很大的杂音。我很欣赏那个时代我们支持国产手机,国产手机能给我们带来什么,是廉价还是?除了廉价,还有安全和实用。老实说,这问法看着就让人不舒服,总感觉国产手机就低人一等。表面上说国产手机廉价,骨子里还是自己的不自信!表面是支持国产,实际上还是看重国产手机的性价比,觉金色传说降临尘世,美商海盗船K100RGB璀璨金特别版开箱时刻一年左右,美商海盗船推出了旗舰机械键盘K100RGB的璀璨金特别版K100RGBSE,将上面板升级成了璀璨的金色,这个版本在中国区首发,用以致敬中国电竞的黄金时代。硬件配置方面请问关于Linux的学习哪里有练手的地方吗?想学Linux,怎么练手那?直接装一个linux操作系统使用虚拟机装一个Linux操作系统使用在线的Linux学习环境云上Linux操作系统(像云服务器)Windows下的LinuSpringCloud升级之路2020。0。x版29。SCOpenFeign的解析(2)本系列代码地址httpsgithub。comJoJoTecspringcloudparent在使用云原生的很多微服务中,比较小规模的可能直接依靠云服务中的负载均衡器进行内部域名与服荣耀60和OPPOReno7曝光,无缘骁龙898,配置依旧很豪横在安卓手机市场中,高通骁龙处理器常年都是领先的地位,与华为的麒麟处理器一直都是你追我赶的状况,在麒麟处理器受限制后,安卓市场只剩了高通骁龙和联发科,但由于早期联发科的不给力,很多用我拿GalaxyZFlip3当作主力机的60天9月8号,当时我的S10e服役两年有余,卡顿不多,但已经换过一块电池,开始时常发热,烧烤手掌的柠檬黄色背板似乎提醒我它大限降至。我在数码讨论群组朋友们数十次的怂恿与提前恭喜下,捞离写一个自己的vuecli脚手架目前在市面上存在很多脚手架,如createreactappvuecli。我们可以通过一行简单的命令,就能创建一个基本的项目工程,大大地提高了开发效率。但是我们会面临一个问题,除了脚华为捐赠欧拉,欧拉是什么?11月9日,操作系统产业峰会2021在北京举办。在本次会议上,华为携手社区全体伙伴共同将欧拉开源操作系统(openEuler,简称欧拉)正式捐赠给开放原子开源基金会。据行行查分析师为什么客厅空调使用挂机比较少呢?为什么客厅空调使用挂机比较少这个问题感觉很严谨哈哈,因为并不是没有客厅使用挂机空调,只是比较少。那么为什么会出现客厅使用挂机空调比较少,什么情况下客厅会使用挂机空调呢?那当然是因为
宇宙极有可能是一个正在生长的细胞体自从人类航天发展以来,我们对宇宙进行了无尽的探索,最近有一个宇宙的全息图像引起人们的热议,图片中全息宇宙就像一个正在生长的细胞体。可能所谓的宇宙大爆炸其实就是宇宙这个无穷大的细胞正CollectionPriorityQueue源码解析,原来源码能这么简单?概述前面以JavaArrayDeque为例讲解了Stack和Queue,其实还有一种特殊的队列叫做PriorityQueue,即优先队列。优先队列的作用是能保证每次取出的元素都是队当年的华为太子,叛逃后被任正非怒砸4亿围剿,如今怎样了当年的华为太子,叛逃后被任正非怒砸4亿围剿,如今怎样了你身边有这样的人吗?从小是学霸,门门功课都非常优异,自己还特别刻苦,早早就进了名校。可到了职场上,他们却没有如预料般青云直上。出行江湖与网约车抢生意,出租车有胜算吗?网约车历经大起大落,出租车一直平平无奇,这一波谁赢了?出行行业又添赛道自动驾驶,滴滴曹操出行一喂顺风车等平台打起十二分精神抢占市场,试图赢回资本的宠爱。出租车司机不依不饶围堵无证车新系统来了荣耀Magic3系列适配MagicUI6。0PChome手机频道报道据荣耀俱乐部官微消息称,荣耀Magic3系列MagicUI6。0正式版本,现已开启不限量开放升级,荣耀Magic3荣耀Magic3Pro荣耀Magic3至臻深市数字经济企业聚焦国家战略紧抓新机遇证券时报记者吴少龙当前,数字经济引领新一轮科技创新和产业变革浪潮。国家十四五规划也提出加快数字化发展,打造数字经济新优势,擘画出建设数字中国智慧社会的宏伟蓝图。随着发展路线图逐渐明荣耀Play6TPro首批评价登场,好评率96,仅有的差评让人啼笑皆非作为荣耀最新发布的新品手机,荣耀Play6TPro在发布之前就深受消费者的喜爱。作为荣耀Play系列的最新成员,荣耀Play6TPro依然是一款走量的机型,所以在设计思路方面还是比原材料成本疯涨电动汽车制造商被迫寻求技术创新据西班牙国家报网站近日报道,美国特斯拉在几天内两次提价,比亚迪也效仿之。这家中国车企和埃隆马斯克都指出了原材料成本问题这威胁到生产出让大众买得起的电动汽车的梦想。报道称,为了保住这每月仅需959元,工薪阶层也养得起,特斯拉Model3用车成本解读最近这几年买电动车的消费者越来越多,很多电动车车主表示开习惯电动车后,再也不想开燃油车了,一是因为电动车有较好的动力和隔音表现,再就是因为电动车用车成本特别低!今天我们就以电动车界微信出了一款新的模式,适用于不识字的老年人群为什么说这项功能适用于老年人呢,原因在于,现在大多数的年轻人聊天,选择的是打字模式,不怎么喜欢发语音,对于识字的人来说,怎么发信息都无所谓,但是对于那些年纪大点,不认识字的人来说,微信可以直接听文字消息?这个偷偷上线的新功能,真的很实用微信的语音消息转文字,想必大家都经常用。当我们不听微信语音时,可以长按语音消息,选择转文字,将语音现在转换成文本进行查看。但大家有没有一种想法,我们能不能把文字消息变成语音,让手机