前言

为什么要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('<td data-title="IP">(.*?)</td>', response.text)
PORT_list = re.findall('<td data-title="PORT">(.*?)</td>', 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个,然后没一个是可以用的

Python获取免费代理IP,并全部测试一遍,结果大失所望相关推荐

  1. 用Python获取免费代理IP

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

  2. Python之免费代理ip的抓取与使用

    Python之免费代理ip的抓取与使用 使用爬虫不可避免的就会遇到网站的各种封ip操作,因此就需要我们找寻代理,通过代理进行操作,屏蔽自己真实ip. 本文直接从网站中抓取代理ip地址,进行测试,并将测 ...

  3. 获取免费代理IP,并检验IP有效性

    爬虫程序访问网站,速度很快,很容易突破网站设置的访问次数,此情况下就会被停止访问,或者IP被封.如果此时能有一些代理IP,切换不同的代理IP去访问网站,使网站以为是从不同的机器上访问的,那么代理IP背 ...

  4. 使用python为爬虫获取免费代理ip

    免费代理ip的爬取 爬虫一直是python使用的一个重要部分,而许多网站也为此做了许多反爬措施,其中爬虫访问过于频繁直接封ip地址也作为一种"伤敌一千,自损八百"的方法被许多网站采 ...

  5. python自制免费代理IP服务

    python去各大免费代理ip网站抓取代理ip并做校验入库,然后对库里的ip不停做校验,然后用flask做成api接口 传送门:https://github.com/zjl1110/ProxyIPGe ...

  6. 使用Scylla获取免费代理IP

    简介 自动化的代理 IP 爬取与验证 易用的 JSON API 安装 pip直接安装 pip install scylla scylla --help scylla # 运行爬虫和 Web 服务器 查 ...

  7. 爬虫获取免费代理IP

    创建文件UserAgent.py 写入: import randomuser_agent = ["Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6 ...

  8. Python 免费代理ip的批量获取

    Python 免费代理ip的批量获取 简介 网络爬虫的世界,向来都是一场精彩的攻防战.现在许多网站的反爬虫机制在不断的完善,其中最令人头疼的,莫过于直接封锁你的ip.但是道高一尺魔高一丈,在爬取网页的 ...

  9. 怎样使用python爬虫获得免费代理IP

    怎样使用python爬虫获得免费代理IP 进行爬取和测试有效性 总结 爬虫一直是python使用的一个重要部分,而许多网站也为此做了许多反爬措施,其中爬虫访问过于频繁直接封ip地址也作为一种" ...

最新文章

  1. 负载均衡算法-处理能力均衡
  2. DL之Keras:基于Keras框架建立模型实现【预测】功能的简介、设计思路、案例分析、代码实现之详细攻略(经典,建议收藏)
  3. cocos2dx的图片载入
  4. 邮箱批量登录接验证码_记一次莫名的需求(临时邮箱|企业邮箱)
  5. J-Link cmd的使用
  6. mate10支持html,华为Mate 10再曝光:配置强劲,全面屏十分惊艳
  7. [转载] python中的MySQLdb模块
  8. matlab 切比雪夫逼近,切比雪夫等波纹逼近.PDF
  9. mysql高并发频繁地写_Mysql写入频繁,怎么破?
  10. kux格式怎么转换 kux完美转换成MP3音频的技巧分享
  11. stm32低功耗解决方案-(外部时钟芯片RX8025T)
  12. java继承动物类_Java之继承
  13. 共模和差模电感电路分析方法及思路
  14. C++语言里的pow函数(初学)
  15. 如何用css写出一个三角形
  16. 懒懒的Rain的寒假小结
  17. ionic中的slide-box
  18. mysql5.7出现:ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)问题解决
  19. 简单的图书管理系统(类的练习)
  20. 解决IDEA报错Address localhost:1099 is already in use

热门文章

  1. 机器学习考点---过拟合与欠拟合、CNN原理......
  2. 电子产品安规测试产品及检测设备
  3. 5.1.8 NoSQL数据库-Redis(键值key-value)-Redis配置详解
  4. JSP实验-简单页面设计
  5. rs232读取智能电表_智能电表防窃电原理 偷电为什么会被发现
  6. 4、Kafka API实战
  7. 陀螺精选第1期:BCH生死战,谁能存活?
  8. CF1037E Trips
  9. 【CODECHEF】Children Trips(分块)
  10. 单片机c语言 软件抗干扰,单片机软件抗干扰的几种常见方法