当前位置: 首页 > article >正文

使用 Python 构建代理池并测试其有效性

前言

在本篇文章中,我们将介绍如何通过 Python 脚本来构建一个代理池,并且对这些代理的有效性进行测试。整个流程涵盖了从网站抓取代理信息、存储这些信息以及异步地测试代理的有效性。这个脚本可以用作网络爬虫或其他需要使用代理服务器的应用的基础工具。
目标网站
在这里插入图片描述

一、环境准备

确保你的环境中已安装了以下 Python 库。如果没有安装,请使用 pip 命令安装:

  • aiohttp:异步HTTP客户端/服务器库。
  • pandas:数据处理库。
  • openpyxl:用于读写 Excel 文件。
  • DrissionPage:基于 Selenium 的网页自动化库。
  • fake_useragent:生成随机的 User-Agent 字符串。
pip install aiohttp pandas openpyxl DrissionPage fake_useragent

二、代码实现

2.1 读取初始代理列表

首先,我们需要从文件中读取预先收集的代理列表。这将是我们的代理池的基础。

file_path = "E:/Python/代理池/proxies.txt"

proxies = []
with open(file_path, 'r') as file:
    for line in file:
        proxy = line.strip()  # 去除每行末尾的换行符
        proxies.append(proxy)

2.2 初始化 Excel 工作簿

我们还需要创建一个 Excel 工作簿来存储从网页抓取到的数据。

# 初始化 Workbook 对象
wb = Workbook()
# 添加一个变量来跟踪是否已经抓取过表格数据
table_data_fetched = False

2.3 寻找可用的代理

接下来,我们编写一个函数 find_available_proxy,它会随机选择一个代理,并尝试用它来访问一个测试URL。如果代理能够成功响应,则认为它是可用的。

def find_available_proxy():
    # 重复读取代理列表,以确保最新的代理可用
    proxies = []
    with open(file_path, 'r') as file:
        for line in file:
            proxy = line.strip()
            proxies.append(proxy)
    headers = {
   'User-Agent': UserAgent().random}
    
    while True:
        dproxy = random.choice(proxies)
        try:
            response = requests.get('http://example.com', proxies={
   'http': dproxy}, headers=headers, timeout=5)
            if response.status_code == 

http://www.kler.cn/a/380972.html

相关文章:

  • Spring Boot 多数据源解决方案:dynamic-datasource-spring-boot-starter 的奥秘
  • 数据结构经典算法总复习(下卷)
  • 了解RPC
  • 【Android】unzip aar删除冲突classes再zip
  • 图书馆管理系统(三)基于jquery、ajax
  • [ESP]从零开始的Arduino IDE安装与ESP环境配置教程
  • JavaEE初阶----网络原理之TCP篇(一)
  • 10款PDF转Word软件工具的使用感受及其亮点!!!
  • LeetCode:20. 有效的括号(java)
  • 计算机网络网络层笔记
  • golang 实现比特币内核:椭圆曲线有限域的代码实现
  • #渗透测试#SRC漏洞挖掘# 操作系统-windows系统bat病毒
  • 有线电视 1.27.5 | 完全免费的电视直播应用,频道丰富,画质清晰
  • 成功解决WSL2上的Ubuntu22.04执行sudo apt-get update指令报错问题
  • 基于A*算法的无人车路径规划
  • 高斯飞溅OccGaussian 人体重建
  • IP-guard与Ping32文档加密解决方案对比,选择适合自己的解决方案
  • glsl基于LTC的面光源渲染 - 矩形光通过three.js
  • Java基础-Java中的常用类(上)
  • 服务器作业3
  • H7-TOOL的LUA小程序教程第17期:扩展驱动AD7606, ADS1256,MCP3421, 8路继电器和5路DS18B20(2024-11-01)
  • RPC核心实现原理
  • 华为eNSP:配置DHCP Snooping
  • 梁山派入门指南3——串口使用详解,包括串口发送数据、重定向、中断接收不定长数据、DMA+串口接收不定长数据,以及对应的bsp文件和使用示例
  • 冒泡排序、选择排序、计数排序、插入排序、快速排序、堆排序、归并排序JAVA实现
  • 小新学习k8s第四天之发布管理