免费ip代理池

最近做爬虫,需要做一个 IP 代理池,但是又不想掏钱,所以就自己做一个。

这个代理池主要爬的是 https://www.89ip.cn/ 的免费代理,之后对代理地址进行了验证,输出能够正常使用的代理。

废话不多数,直接上代码

# 导入requests模块
import requests
# 从bs4中导入BeautifulSoup模块
from bs4 import BeautifulSoup


# 定义获取代理地址的方法
def get_all_proxy(pages, ua):
    # 定义proxy_ips列表存储代理地址
    proxy_ips = []
    # 设置headers
    headers = {"User-Agent": ua}
    # 从第一页开始循环访问
    for page in range(1, pages + 1):
        print(f"正在爬取第{page}页!")
        url = "https://www.89ip.cn/index_{page}.html"
        res = requests.get(url, headers=headers)
        # 使用.text属性获取网页内容,赋值给html
        html = res.text
        # 用BeautifulSoup()传入变量html和解析器lxml,赋值给soup
        soup = BeautifulSoup(html, "lxml")
        # 使用find_all()方法查找类名为layui-table的标签
        table = soup.find_all(class_="layui-table")[0]
        # 使用find_all()方法查找tr标签
        trs = table.find_all("tr")
        # 使用for循环逐个访问trs列表中的tr标签,一个tr代表一行,第一行为表头,不记录
        for i in range(1, len(trs)):
            # 使用find_all()方法查找td标签
            ip = trs[i].find_all("td")[0].text.strip()
            port = trs[i].find_all("td")[1].text.strip()
            # 拼接代理地址
            proxy_ip = f"http://{ip}:{port}"
            # 将获取的代理地址保存到proxy_ips列表
            proxy_ips.append(proxy_ip)
    # 返回proxy_ips列表
    return proxy_ips


# 定义代理地址有效性验证方法
def check_proxy(ip, ua):
    # 设置headers
    headers = {"User-Agent": ua}
    url = "https://www.baidu.com"
    # 设置代理信息
    proxies = {"http": ip}
    # 通过请求百度首页来验证代理地址是否有效
    try:
        res = requests.get(url, headers=headers, proxies=proxies, timeout=3)
    except requests.exceptions.Timeout:
        # 超过3秒未返回,则请求超时
        print("请求超时")
        result_code = 0
    else:
        result_code = res.status_code
    # finally:
    #     return res.status_code
    # 返回请求状态
    return result_code

def start():
    # 定义good_ips列表用于存储有效的代理地址
    good_ips = []
    # 定义User-Agent参数
    ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
    # 设置获取页面的数量
    pages = 5
    # 调用get_proxy方法获取网站上的免费代理
    proxy_list = get_all_proxy(pages, ua)
    # 输出获取结果
    print(f"共爬取了 {len(proxy_list)} 个代理地址!")

    # 对获取的代理地址逐个进行有效性验证
    for ip in proxy_list:
        # 调用验证方法
        result = check_proxy(ip, ua)
        # 判断返回状态是否为200
        if result == 200:
            # 如果返回状态是为200,则保存到good_ips列表中
            good_ips.append(ip)
            print(ip)

        else:
            # 否则continue
            continue
    # 输出检测结果
    print(f"共有 {len(good_ips)} 个代理地址通过了检测!")


# 主函数
if __name__ == "__main__":
    start()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/496264.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

win11 查看 wifi 密码

** win11 查看 wifi 密码 ** 第一种方法: 1.点击桌面左下角的开始菜单,选择“设置”。 2.在网络和internet中选择“高级网络设置”。 3.在相关设置下方点击“更多网络适配器选项”。 4.右击“WLAN”,在WLAN信息窗口点击“状态”。 5.…

月入10.5k;36岁生物专业转行网优,选择真的比努力更重要!

张雪峰说:普通家庭的孩子选择专业首要要考虑的是能不能就业?能不能拿到高薪?因为除了你的父母,没人会对你的未来负责。 学历和专业哪个更重要?不同的人往往会有不同的解答,今天故事的主人公H先生毕业于武汉…

关于使用vscode搭建c/c++编程环境

目录 关于使用vscode搭建c/c编程环境一、前言二、安装 IDE 二、安装TDM-GCC安装三、安装C/C环境四、编写代码并进行编译 关于使用vscode搭建c/c编程环境 一、前言 一直觉得vscode是生产强有力的生产工具,基于此,做一篇学习笔记进行记录。 二、安装 ID…

centos7系统下nginx1.24.0升级

如果没有这些目录,请先创建: mkdir /data/software mkdir /data/program提前下载所需的软件: cd /data/software wget https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz wget https://nginx.org/download/nginx-1.24.0.tar.gz安装nginx cd /data/soft…

正弦实时数据库(SinRTDB)使用(3)-用户管理

通过实时数据库管理工具登录后,在头部功能区的用户管理或左侧导航菜单的用户管理都可以打开用户管理功能界面,用户管理功能界面展示在中部主窗口区。 用户管理界面如下所示: 用户管理顶部包含刷新、添加用户、修改角色、修改密码及删除用户等…

【CASS精品教程】CASS添加标准图幅(50×50cm+50×40cm)

大比例尺地形图图幅一般分为正方形和矩形分幅两种,本文讲解CASS中添加标准图幅(5050cm、5040cm)的方法。 文章目录 一、CASS参数配置二、添加标准图幅(5050cm)三、添加标准图幅(5040cm)打开基于CASS自带案例数据study.dat绘制好的地形图study.dwg,如下图所示,下面来演示两种…

近年来,常见5大软件开发项目管理工具

时代进步,技术进步,汇总下近几年5大常用的软件开发项目管理工具。 1、微软项目管理软件 Microsoft Project(或MSP)是由微软开发销售的项目管理软件程序。软件设计目的在于协助项目经理制定发展计划、为任务分配资源、跟踪进度、管…

2024年给Mac电脑提速小妙招

经常听到小伙伴在抱怨PC电脑很慢,但是其实Mac电脑随着用的时间增长,运行速度也会越来越慢,那么造成Mac运行慢的原因有很多,可能是操作系统过时未更新,也可能是内存(RAM)不足,以下小编…

IDEA2023版本整合SpringBoot热部署

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 开发环境篇 ✨特色专栏: M…

Avue-crud表格操作栏不显示修改、删除按钮

2024-03-28 奇了怪了,CSDN自动把我之前的文章设置为VIP了,怪不得有时候搜东西看着看着要收费,现在找东西都不好找,我已经反馈不同意了,看看能不能给我取消吧 今天用Avue的时候发现操作栏的按钮没了,按照文…

mysql进阶查询

按关键字排序 PS:类比于windows 任务管理器 使用 SELECT 语句可以将需要的数据从 MySQL 数据库中查询出来,如果对查询的结果进行排序,可以使用 ORDER BY 语句来对语句实现排序,并最终将排序后的结果返回给用户。这个语句的排序不光可以针对某…

vue3动态绑定style

vue3动态绑定style :style"{属性名:变量}"直接引用对象 :style"对象"绑定一个含多个样式的数组 :style"[styleA, styleB]" :style“{属性名:变量}” 变量的赋值可以根据自己的业务做出调整 直接引用对象 :style“对象”…

Transformer的前世今生 day06(Self-Attention和RNN、LSTM的区别)

Self-Attention和RNN、LSTM的区别 RNN的缺点:无法做长序列,当输入很长时,最后面的输出很难参考前面的输入,即长序列会缺失上文信息,如下: 可能一段话超过50个字,输出效果就会很差了 LSTM通过忘…

fuzzywuzzy,一个好用的 Python 库!

目录 前言 安装 基本功能 1. 字符串相似度比较 2. 模糊匹配与排序 实际应用场景 1. 数据清洗 2. 文本匹配与搜索 3. 搜索引擎优化 总结 前言 大家好,今天为大家分享一个好用的 Python 库 - fuzzywuzzy Github地址:https://github.com/seatgeek/fu…

计算机网络基础——网络安全/ 网络通信介质

chapter3 网络安全与管理 1. 网络安全威胁 网络安全:目的就是要让网络入侵者进不了网络系统,及时强行攻入网络,也拿不走信息,改不了数据,看不懂信息。 事发后能审查追踪到破坏者,让破坏者跑不掉。 网络…

MySQL进阶-----索引的语法与SQL性能分析

目录 前言 一、索引语法 1.SQL语法 2.案例演示 二、SQL性能分析 三、慢查询日志 1.开启日志 2.测试样例 四、profile详情 1.开启profile 2.profile测试SQL语句 五、explain详情 1.语法结构 2.执行顺序示例(id) 3.执行性能示例(type) 前言 本…

常用的苹果应用商店上架工具推荐

摘要 移动应用app上架是开发者关注的重要环节,但常常会面临审核不通过等问题。为帮助开发者顺利完成上架工作,各种辅助工具应运而生。本文探讨移动应用app上架原理、常见辅助工具功能及其作用,最终指出合理使用工具的重要性。 引言 移动应…

考研数学|汤家凤1800基础部分要做完吗?

我教你一个方法,保证让你高质量的做完1800基础部分,而且还不用把所有题目都做了 我当然不是教你如何投机取巧,投机取巧是考不了高分的,我教你的都是我在实际考研过程中实际运用到的方法! 其实这个方法也是我在二战的时…

StatefulBuilder 和 Builder

前言 果然了解的越多,越发现自己狗屁都不是。StatefulBuilder 和 Builder 之前真的不知道。还是在 对话框状态管理 中了解到了这两个东西。 简介 以下内容来自通义灵码 在Flutter中,StatefulBuilder 和 Builder 都是用来动态构建 widget 树的组件&am…

2024年第十届国际虚拟现实大会(ICVR 2024)即将召开!

会议面向虚拟现实、增强现实、人工智能等互联网新技术领域的专家及学者, 致力于共同促进国内外虚拟现实的发展与应用。 2014年至今,ICVR在全球新加坡,美国洛杉矶,中国成都,香港等国家及地区召开,面向虚拟现…
最新文章