Python获取免费代理IP,并全部测试一遍,结果大失所望
创始人
2024-04-06 17:51:15
0

前言

为什么要IP代理:当采集数据, 批量采集数据, 请求速度过快, 网站可能会把你IP封掉 <你的网络进不去这个网站>
IP代理换一个IP, 再去采集请求数据

一. 抓包分析数据来源

1. 明确需求:
  • 确定采集网站以及采集数据是什么
  • 获取IP代理, 检测IP代理是否可用
dit = {'http': 'http://' + IP:端口
}
2. 分析IP和端口号 这两个数据, 请求那个网站可以得到?
  • F12 或者 右键点击检查选择network 刷新网页
  • 分析数据在哪里 --> 通过关键字<我们想要数据>搜索数据来源

请求 https://www.kuaidaili.com/free/ 获取 response 就可以得到我们想要IP和端口的数据

二. 代码实现步骤过程

  1. 发送请求, 模拟浏览器对于url地址发送请求
  2. 解析数据, 提取我们想要数据内容
  3. 保存数据, 把可用IP代理保存本地,IP代理检测
  4. 检测可用之后, 保存IP代理

代码的实现

发送请求

模拟伪装 --> headers 请求头 字典数据类型

# 请求链接
url = f'https://www.kuaidaili.com/free/inha/1/'
headers = {# User-Agent 用户代理 表示浏览器基本身份信息'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
response = requests.get(url=url, headers=headers)

解析数据

三种解析方法

re:直接对于字符串数据提取

  • re.findall(‘匹配什么数据’, ‘什么地方匹配’) 找到我们想要数据内容
    从什么地方去匹配什么数据
    从 response.text 里面去匹配 (.?) 其中 (.?) 这段内容就是我们要的数据
  • () 表示你要的数据, .*? 匹配规则 可以匹配任意字符(除了换行符\n)
IP_list = re.findall('(.*?)', response.text)
PORT_list = re.findall('(.*?)', response.text)

css:根据标签属性提取数据
#list tbody tr td:nth-child(1) 定位标签元素
td:nth-child(1) 表示第一个td标签
td:nth-child(1)::text 表示提取第一个td标签里面文本数据
getall() 表示获取所有

IP_list = selector.css('#list tbody tr td:nth-child(1)::text').getall()
PORT_list = selector.css('#list tbody tr td:nth-child(2)::text').getall()

xpath:根据标签节点提取数据

IP_list = selector.xpath('//*[@id="list"]//tbody/tr/td[1]/text()').getall()
PORT_list = selector.xpath('//*[@id="list"]//tbody/tr/td[2]/text()').getall()

for循环遍历提取数据 把列表里面元素 一个一个提取出来

for IP, PORT in zip(IP_list, PORT_list):dit = {'http': 'http://' + IP + ':' + PORT,'https': 'https://' + IP + ':' + PORT,}print(dit)

检测IP代理是否可用, 请求一个网站携带上IP代理

try:# 携带IP代理发送请求response_1 = requests.get(url='https://www.baidu.com/', headers=headers, proxies=dit, timeout=1)# response_1.status_code 获取状态码if response_1.status_code == 200:print(dit, '这个代理真润')use_list.append(dit)
except:print(dit, 'He tui~ 用不了')

保存

with open('代理https.txt', mode='w', encoding='utf-8') as f:f.write('\n'.join([str(i) for i in use_list]))

因为只是示范,所以一共获只取了45个,然后没一个是可以用的

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇

相关内容

热门资讯

恒誉环保(688309)披露关... 截至2025年12月29日收盘,恒誉环保(688309)报收于23.88元,较前一交易日上涨2.58...
一场精准的“政策捕捉” 传鼎晖... 观点网 上海苏州河畔,一幢服务式公寓悄然易主,掀开了住房租赁行业生存逻辑变革的一角。 最新消息显示,...
从制度协同到产业共振 中越合作... [ 完善“边境口岸+产业园区”联动模式,将云南221.4亿元对越贸易额的增长势能延伸至内陆,形成“边...
武进不锈(603878)披露拟... 截至2025年12月29日收盘,武进不锈(603878)报收于10.16元,较前一交易日上涨2.21...
*ST熊猫因涉嫌违反证券法律法... 证券之星消息,12月30日*ST熊猫公开信息显示,熊猫金控股份有限公司因涉嫌违反证券法律法规,信息披...
7岁男孩偷吃邻居“变态辣”外卖... 七岁男孩小雨在小区玩耍时,发现邻居小张家门口的未拆外卖无人看管,便偷偷取走食用。此前小张多次遭遇外卖...
锂矿龙头,涉嫌内幕交易罪单位犯... 12月29日晚,锂矿龙头赣锋锂业发布公告称,公司于12月29日收到宜春市公安局的移送起诉告知书,因涉...
中国铀业聘任张仲斌为总法律顾问... 12月29日,中国铀业(001280)发布公告,王辉因工作安排原因辞去公司总法律顾问职务,辞任后仍担...
[视频]形势政策系列报告会第四... 央视网消息(新闻联播):形势政策系列报告会第四场报告会今天(12月29日)在北京举行。商务部党组书记...
联众(06899.HK)就前执... 格隆汇12月29日丨联众(06899.HK)公告,针对公司前执行董事兼前行政总裁伍国梁在其任职期间于...