python : 建立属于自己的爬虫代理ip池

python : 建立属于自己的爬虫代理ip池

python : 免费代理IP获取,验证可用性,建立属于自己的代理ip池
在进行爬虫爬取网站时候总会面临着各种各样的反爬措施,最让人头疼的一般就是封IP地址了,这时候使用代理IP就是一个明智的选择了。
建立属于自己的代理IP池是进行爬虫的一个很高效的办法。
网上存在着大量的免费代理IP网站,以下选取一个较为好用的代理IP网站进行爬取,建立属于自己的代理IP池。(西祠代理快代理等等)

在这里插入图片描述
对于可用的代理获取需要进行多步操作进行提取,毕竟免费给的,怎么可能都是好东西呢?

好东西都是藏在其中的,需要我们细心去提取,提取出来之后就是一个非常美好的事情了。

提取到可用的代理IP之后,就可以建立一个专属于自己的代理IP池了,这样子是不是非常美好呢。有了自己的代理IP池之后,从此爬虫就不再怕被封了。

1 、分析网站,提取高匿代理(只有高匿代理才是真正想要的,如果有需要其他的透明代理,或者普通代理可以自行更换网址) 高匿代理网址:https://www.xicidaili.com/nn

2、提取高匿代理的总页数

res = requests.get(url)
html = parsel.Selector(res.text)
pages = html.xpath('//div[@class="pagination"]/a[10]/text()').extract_first()

3.提取所有的IP地址以及端口号

ips = parsel.Selector(response.text).xpath('//table/tr/td[2]/text()').extract()
posts = parsel.Selector(response.text).xpath('//table/tr/td[3]/text()').extract()

4.对所有的IP地址以及端口号进行检测

for ip,post in zip(ips,posts):
    id = (ip+":"+post).strip()
    try:
        telnetlib.Telnet(ip,post,timeout=3)
        print(id# 查看通过第一次检测的代理IP
    except Exception as e:
        pass

5.检测出的IP地址就是可用度较高的IP地址,如果还是想要最求可用度更高的IP地址,可以对上面检测过的IP地址进行二次检测

try:
    res = requests.get(url,timeout=5,proxies={
   "https":(ip+":"+post).strip()})
    if (res.status_code == 200):
        id_list.append("通过第二次检测:",id)   # 这里获取到的IP地址就是高质量的可用代理IP
        except:
            pass

在这里插入图片描述

6、实现翻页功能,重复运行以上2–5步骤,(使用第一步中提取的总页数进行翻页提取数据)

for i in range(1,int(pages)):
    url = "https://www.xicidaili.com/nn/{}".format(i)
    response = requests.get(url)

由以上步骤便可提取到大量的免费的高匿的代理IP了,一起行动起来吧。

当然这还不是最好的获取代理IP的方法,毕竟这只是一个单线程获取的方法,对代理IP的检测需要的时间较长,把检测代理IP的过程换成多线程检测才是一个更好的获取代理IP的方法。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115147.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 以太坊私有链搭建_以太坊节点减少

    以太坊私有链搭建_以太坊节点减少网上关于如何搭建私链的文章很多,但是看来看去都是一样的,千篇一律,想找点不一样,新鲜的知识很难,本文总结归纳那些文章的内容,从使用私链的角度出发写了一篇比较全面的博客,内容包含以下几点:windows单节点 windows多节点 linux创建节点并,windows远程使用linux节点 linux节点和Windows节点建立连接(网络原因,提供思路)1.windows单节…

    2022年10月8日
    2
  • pycharm 2021.11 激活码-激活码分享

    (pycharm 2021.11 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html4M…

    2022年3月29日
    151
  • MySQL恢复备份读书笔记

    MySQL恢复备份读书笔记

    2021年8月29日
    71
  • javaweb酒店管理系统源代码_java简单酒店管理系统代码

    javaweb酒店管理系统源代码_java简单酒店管理系统代码大家好,我是全微毕设团队的创始人,本团队擅长JAVA(SSM,SSH,SPRINGBOOT)、PYTHON、PHP、C#、安卓等多项技术。今天将为大家分析一个小型酒店管理系统(当前酒店管理系统已经得到了充足的发展和完善,一些大的酒店购买了功能强大、数据量处理快速、客户行为研究的软件,借此来提升酒店的核心竞争力。但是对于一些中小规模的酒店而言,昂贵的系统花费、专人的维护是不现实的,也是非常不灵活的。…

    2022年9月25日
    2
  • uni-app uni.uploadFile上传图片前后端(java)详解

    uni-app uni.uploadFile上传图片前后端(java)详解近日在使用uni.uploadFile上传图片时,碰到后端收到不到文件的问题,网上没有写uni-appjava后端的处理实例,小程序到是有很多,但都是单文件上传,即使是多文件上传,也是采用一个for循环多次调用uploadFile函数,对文件一个一个提交。伪代码如下://微信小程序为例:for(vari=0;i<filePaths.length;i++){…

    2022年6月15日
    1.0K
  • 滑动平均值滤波_m点滑动平均滤波器

    滑动平均值滤波_m点滑动平均滤波器   关于数据采集的滑动平均值滤波的算法      —王超杰    以ADC为例,采集口的模拟量可能夹杂着不同频段,不同峰值的干扰信号,这些干扰信号和要采集的模拟量互相干扰,那么ADC采集的数据量就会偏移原有的真实结果。那么通过硬件与数字滤波两种手段可大大减少采集误差,提高精度。    一般滤波均通过程序算法滤除,其包括去极值滤波、算术平均值滤波、滑动平均值滤波、加…

    2025年7月6日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号