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的方法。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Web安全渗透详细教程+学习线路+详细笔记【全网最全】

    Web安全渗透详细教程+学习线路+详细笔记【全网最全】欢迎关注微信公众号:hacklex让安全技术不再神秘,让编程更加有趣~~~1.序章 1.1.Web技术演化 1.2.网络攻防技术演化 1.3.网络安全观 2.计算机网络与协议 2.1.网络基础 2.2.UDP协议 2.3.TCP协议 2.4.DHCP协议 2.5.路由算法 2.6.域名系统 2.7.HTTP协议簇 2.8.邮件协议族 2.9.SSL/TLS 2.10.IPsec 2.11.Wi-Fi …

  • golang 2021.7.20 激活码【永久激活】

    (golang 2021.7.20 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.htmlMLZPB5EL5Q-eyJsa…

  • 盘点开发中那些常用的MySQL优化

    盘点开发中那些常用的MySQL优化

  • c比python快多少倍_python和c++哪个简单

    c比python快多少倍_python和c++哪个简单国外有测试指出在相同复杂度算法中,C++约比Python快50倍左右。因此Python适合上层应用;C++则适合底层控制。本文介绍如何让C++和Python形成优势互补

  • 银行家算法c语言加注释,银行家算法C语言代码

    银行家算法c语言加注释,银行家算法C语言代码《银行家算法C语言代码》由会员分享,可在线阅读,更多相关《银行家算法C语言代码(10页珍藏版)》请在人人文库网上搜索。1、实验名称:银行家算法声明:杨秀龙学号:专业课:创新实验课111地图老师:霍林实验标题银行家算法实验的目的银行家算法如何避免死锁的更深层次理解设计思想银行家算法假定,根据进程的请求,在该进程的请求中已分配的资源上执行安全算法,如果可以满足其他进程的所有请求,则满足该进程的请求,否…

  • Linux重启nodejs

    Linux重启nodejs想要重启nodeserver进入相应的项目执行npmstop发现没用server仍然在,于是要杀掉相应进程1、ps-ef|grepnode查看node对应的pid,然后killpid,再进入对应项目npmstart2、如果以上方法不行可以这样:killnode或者kilallnode

    2022年10月18日

发表回复

您的电子邮箱地址不会被公开。

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