首页 > 编程知识 正文

怎样自己配置ip池,ip池搭建

时间:2023-05-05 05:03:03 阅读:37649 作者:1669

因为在爬行动物的时候经常会遇到频繁奔跑,ip被屏蔽的问题,所以我想做一个简单的ip池,避免这种反过来爬的手段。 当然我写的ip池的功能有点简单,但也能应对攀登时遇到的ip块问题。 整体流程是首先使用get_ip ) )函数从网上获取免费的代理ip地址。 当然,这些代理的ip利用率很低。 用redis数据库的zset保存它。 zset规则集合是分数比普通集合多的字段,保存过程中可以将初始分数与check_ip ) )函数配对(check_ip ) )函数可以检索有序集合中的Ip,访问百度,测试其是否可用(如果可用,也可以将其分数设为最大值),如果不可用,从该分数中减去1,从代理池中删除,直到达到0。 当然我觉得这很简单。 只要简单地正负一下,就可以使用了。

直接去下面的代码。

importrequestsfrombs4importbeautifulsoupfromredisimportstrictredisstore=严格准备(host=' localhost ',port=6379, port=6379 URL=' https://www.xici daili.com/nn/' header={ ' user-agent ' : ' Mozilla/5.0 (windows nt 10.0; WOW64; rv:47.0 ) Gecko/20100101 Firefox/47.0 ',}r=requests.get(URL=URL,headers=header ) soup=beautifulsoup () ' lxml ' (infos=soup.find (id=' IP _ list ' ).find_all ) ) count=0forinfoininfos 3360 if info.select ) ) . textport=info.select(TD ) )2).textcount=1store.zadd ) Xici_IP ), { IP ' : ' port : default } (打印) count (def check _ IP ) ) : test _ URL=' https://www.Baidu.com ' store.zzore WOW64; RV :47.0 (gecko/2010 01 01 Firefox/47.0 ),} forproxyinstore.zrangebyscore (' xici _ IP ',1, 9 ) 3360##仅检测无其他管理count2=1proxy=proxy.decode (utf-8 ) (proxy=) http://(proxys ) proxys=(139.224.147 ) 288; proxy proxys={ ' http ' : ' http://' proxy,' https ' : ' https://' proxy } print (' testing ' .第' str ) count2 proxies=proxys,timeout=1.0 ) ifr.status_code==20033333 proxy ) print (第(str(count2)个: )成功) exceppe proxy ) print (第(str(count2)个: (失败) ) ) if_name_=(__main_':get_IP ) ) check有许多可改善的地方首先是多线程的问题。 其次,检测函数的生成不好。 我只要简单地加负1就可以了。 实际检测成功后,可以直接给出其默认值,即最高值。 失败后减去1,然后分数为0时从ip池中删除,会更好。 用redis的zset保存ip仍然很容易使用。 且不说速度快,本机的其他程序可以很容易地调用这个ip池。 我的ip池程序在pycharm上完成了。 在jupyterlab上很好地调用它,小偷很方便。

调用时从redis导出ip即可。 此外,zset还提供了按分数排序,以便于导出高可用性的ip。

如果觉得ip量太少不够的话,可以从网上抓住更多的积分。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。

  •  标签:  
  • ip