Python爬取代理IP

article/2025/8/28 1:09:00

        在一些网页的内容爬取过程中,有时候在单位时间内如果我们发送的请求次数过多,网站就可能会封掉我们的IP地址,这时候为了保证我们的爬虫的正常运行,我们就要使用代理IP。

        下面来介绍如何构建自己的IP池。

我们用快代理来获取代理ip地址:国内高匿免费HTTP代理IP - 快代理

        通过lxml模块的etree,我们很快就可以通过网页源码来获取储存代理ip地址和端口以及IP类型的标签,对它们的爬取也不是一件难事。

        IP爬到后接下来我们要验证我们爬取的IP是否是真正有效的,毕竟作为免费的IP,有效性还是不高的,需要我们进一步的甄别。

在这里我再分享一个网站:

http://icanhazip.com/

        通过访问这个网站,我们可以得到自己当前的IP地址,由此我们可以根据访问该网站得到的返回数据与我们使用的代理IP进行对比观察是否相同,就可以判断我们爬取的代理IP是否有效了。

        下面是完整代码:

import requests
from lxml import etree
import timeheaders = {"User-Agent": "mozilla/4.0 (compatible; MSIE 5.5; Windows NT)"}def get_ips():ls = []ipps = []for i in range(1, 3):url = f"https://free.kuaidaili.com/free/inha/{i}/"page = requests.get(url=url, headers=headers).texttree = etree.HTML(page)ips = tree.xpath('//table[@class="table table-bordered table-striped"]/tbody/tr')for i in ips:try:ip = "http://" + i.xpath('./td[@data-title="IP"]/text()')[0] + ":" + \i.xpath('./td[@data-title="PORT"]/text()')[0]ipps.append(ip)except:continuetime.sleep(1)ipps = list(set(ipps))for ip in ipps:dic = {}dic["http"] = ipls.append(dic)return lsdef check_ips(ls):url = 'http://icanhazip.com/'for i in ls[::-1]:try:r = requests.get(url=url, headers=headers, proxies=i,timeout=5)r.raise_for_status()if r.text[:13]==i['http'][7:20]:continueelse:ls.remove(i)except:ls.remove(i)return lsdef ips():a=get_ips()b=check_ips(a)return bif __name__ == '__main__':print(ips())

        上述代码我仅爬取快代理网站的前两页IP内容,如需更多,可更改get_ips()函数第一个for循环的次数。但是这种方法也有一个弊端,我是一页一页的爬取,然后把爬取的代理IP一个一个的判断,速度会慢下来不少。为了更高效的爬取,我们可以导入线程池,在爬取和验证的过程中均导入线程池,可以让我们爬取的速度成倍增长。

import requests
from lxml import etree
from multiprocessing.dummy import Poolheaders = {"User-Agent": "mozilla/4.0 (compatible; MSIE 5.5; Windows NT)"}
ls=[]
ipps=[]def get_ips(a):url = f"https://free.kuaidaili.com/free/inha/{a}/"page = requests.get(url=url, headers=headers).texttree = etree.HTML(page)ips = tree.xpath('//table[@class="table table-bordered table-striped"]/tbody/tr')for i in ips:try:ip = "http://" + i.xpath('./td[@data-title="IP"]/text()')[0] + ":" + \i.xpath('./td[@data-title="PORT"]/text()')[0]ipps.append(ip)except:continuepool_1=Pool(2)
pool_1.map(get_ips,list(range(1,3)))
pool_1.close()
pool_1.join()for ip in list(set(ipps)):dic={}dic['http']=ipls.append(dic)
print(len(ls))def check_ips(i):url = 'http://icanhazip.com/'try:r = requests.get(url=url, headers=headers, proxies=i,timeout=5)r.raise_for_status()if r.text[:13]==i['http'][7:20]:passelse:ls.remove(i)except:ls.remove(i)pool_2=Pool(15)
pool_2.map(check_ips,ls)
pool_2.close()
pool_2.join()if __name__ == '__main__':print(ls)

爬取前两页的代理IP,可以发现,基本上每5个代理IP中仅有1个是有用的,但毕竟这是免费的,我们仅仅是增加了一步验证的过程,总的来说,还是非常不错的。

 


http://chatgpt.dhexx.cn/article/NGlS7xHp.shtml

相关文章

流量数据分析的方法学习

1、看数字和趋势(以电商网站为例) 2、维度分解 3、用户分群(又叫用户画像) 4、转化漏斗 5、行为轨迹 关注行为轨迹,是为了真实了解用户行为。通过大数据手段,还原用户的行为轨迹,有助于增长团队…

恶意流量分析(一)

在分析恶意样本时,样本可能包含网络行为,比如样本从C2服务器上请求下载后续病毒文件。所以对于在病毒分析的角度,对恶意流量的分析也是不可避免的。在这里通过恶意流量习题(malware-traffic-analysis)对恶意流量进行入…

APP流量分析

分析参数 发送流量、接收流量 流量统计方法 抓包&#xff1a;干扰因素多&#xff0c;其他APP、安卓自带TCP收发长度统计功能 #找到包名 adb shell pm list packsges -3 #找到UID adb shell ps | grep <包名> #找到目录 adb shell cat /proc/9045<uid>/status #…

如何进行网站流量分析(一)

如何进行网站流量分析&#xff08;一&#xff09; 流量分析整体来说是一个内涵非常丰富的体系&#xff0c;整体过程是一个金字塔结构&#xff1a; 金字塔的顶部是网站的目标&#xff1a;投资回报率&#xff08;ROI&#xff09;。 网站流量分析模型举例 1 网站流量质量分析&a…

流量与日志分析

文章目录 1.流量与日志分析1.1系统日志分析1.1.1window系统日志与分析方法1.1.2linux 系统日志与分析方法 1.2 web日志分析iis 日志分析方法apache日志分析**access_log****error_log** nginx日志分析tomcat 日志分析主流日志分析工具使用 1.流量与日志分析 日志&#xff0c;是…

攻防世界—流量分析1

题目&#xff1a;流量分析&#xff0c;你知道这堆流量做了什么事情吗&#xff0c;你能恢复出来flag吗&#xff1f; 拿到附件以后&#xff0c;解压出一个抓包文件&#xff0c;通过wireshark打开&#xff0c;发现大量HTTP报文。 随机查看一个HTTP访问的URL&#xff0c;经过URL解…

流量分析:如何分析数据的波动?

流量分析。 内容分为四部分&#xff1a; 背景&#xff1b; 渠道分析&#xff1b; 转化与价值分析&#xff1b; 流量波动逻辑性分析。 背景 建立产品指标体系和报表之后&#xff0c;分析师和业务方最重要的事情就是每天看各种数据&#xff0c;而这个看数据的过程就是流量分…

网站流量分析数据指标

如果如果把一个网站比作一家超市&#xff0c;运营网站就像打理超市的生意&#xff0c;那么目标就是让访客多停留、多购买、多办几张会员卡。为了达成这个目标&#xff0c;我们先要了解当前的情况&#xff0c;比如有多少人走进了超市、看了多少件产品、多少人办理了会员卡;类似地…

产品流量分析

年底要接的数据需求好多&#xff0c;博客好久没更新了。这次和大家分享一下最近对流量分析的一些理解。 流量是产品获得用户的第一步&#xff0c;没有流量就没有转化与营收。对于流量的分析在产品日常运营效果监控中有着非常重要意义。下面我们就流量的来源与流向分析中需要关…

基于流量的分析理解

文章目录 一、Wirshark1.1 数据过滤1.2 数据流跟踪1.3 数据提取 二、流量分析过程 一、Wirshark Wireshark是一个可以进行数据包的捕获和分析的软件。网卡在对接收到的数据包进行处理之前,会先对它们的目的地址进行检查,如果目的地址不为本机的话,就会丢弃这些数据,相反就会将…

流量分析基础篇

流量分析 1.流量分析是什么? 网络流量分析是指捕捉网络中流动的数据包,并通过查看包内部数据以及进行相关的协议、流量分析、统计等来发现网络运行过程中出现的问题。 CTF比赛中,通常比赛中会提供一个包含流量数据的 PCAP 文件,进行分析。 2.数据包分析 总体把握– 协…

流量告警分析思路

目录 01-流量告警分析中常见的问题 1.安全告警DDOS 2.误报问题始终无法很好的闭环 3.威胁信息验证受阻 4.宽泛的只是涉略面 02-分析前准备工作及注意事项 03安全威胁事件分析 WEB特征检测-SQL注入、XSS、后门访问 WEB特征检测-SQL注入 WEB特征检测-XSS攻击 WEB特征检测…

流量分析入门

前言 个人一直对CTF比赛中MISC中流量分析这一块感兴趣…但好像之前参加的培训没有涉及到。正好看到了一些相关书籍资料&#xff0c;自己向前辈们学习以后整理一些资料来总结一下&#xff08;本人是个很菜…还没入门的pwn手&#xff09; 互联网五层模型 在计算机网络这门课中…

如何进行网站流量分析(二)

如何进行网站流量分析&#xff08;二&#xff09; 流量分析常见分类 指标是网站分析的基础&#xff0c;用来记录和衡量访问者在网站自的各种行为。比如我们经常说的流量就是一个网站指标&#xff0c;它是用来衡量网站获得的访问量。在进行流量分析之前&#xff0c;我们先来了…

CTF--Misc--流量分析

为什么需要流量分析&#xff1f; 网络流量包流转于各个环节&#xff0c;我们可以通过捕捉网络中流动的数据包&#xff0c;然后查看流量包内部的数据以及相关协议&#xff0c;流量分析、统计等等。 通常是包含流量数据的PCAP文件进行分析。 流量分析需要掌握的基本知识&#x…

流量分析基础知识学习

流量分析基础知识学习 wireshark基础语法 常见套路 查看关键字 http contains "flag" //直接出追踪流 右键-》追踪流-》TCP分组字节流 文件-》导出选择分组字节流查看隐藏 binwalk查看 然后再用搜索 然后导出分组字节流做题方法 flag明文 直接搜索flag&#x…

MATLA图片清晰度调整

第一步&#xff1a;选择文件——导出设置——分辨率&#xff08;设置为600&#xff09;

11种图像清晰度评价函数附MATLAB代码

本科毕业论文“基于图像处理的自动对焦技术研究”&#xff0c;对焦过程中的一个重要阶段是图像清晰度评价&#xff0c;我用MATLAB实现了4类清晰度评价函数&#xff1a;基于图像梯度的清晰度评价函数、频域评价函数、信息熵评价函数、统计学评价函数&#xff0c;总计11种。 其中…

如何使用AI图片清晰度增强器软件增强和锐化图片、提高照片清晰度并去除噪点

通过使用深度学习AI算法对照片进行批量锐化、去噪和去模糊处理&#xff0c;该程序可以应用再大部分照片和图片&#xff0c;包括徽标、卡通和动漫 可能很多朋友都会遇到需要批量增强和锐化照片的情况&#xff1a;例如&#xff0c;如果拍摄过程中曝光不足、夜晚噪点多或者画面模…

matplotlib调整清晰度和图像大小

问题 有时我们在使用matplotlib作图时&#xff0c;图片不清晰或者图片大小不是我们想要的&#xff0c;例如下图 上图的相关代码如下&#xff1a; import matplotlib.pyplot as pltx [10,20,30,40,50,60,70,80,90,1000] y1 [7,17,27,37,43,49,57,65,71,77] y2 [7,17,27,37,…