基于Python下,代理池实现(开心代理)

该代码段使用Python的requests和parsel库爬取代理IP,然后通过访问百度来检测这些IP是否存活。存活的IP会被写入文件。爬取的代理IP来源于开心代理网站,每个IP包括HTTP和HTTPS协议。
摘要由CSDN通过智能技术生成

导入所需第三方库

import time #用于休眠    
import requests  #用于请求
import parsel  #用于分解HTML


完成检测IP是否存活方法

#检测代理方法 、 proxies_list为爬取列表
def check_ip(proxies_list):
    #使用user_ok列表存储
    user_ok = []
    #遍历IP列表    
    for proxie in proxies_list:
        # 发送一个请求以便得到该代理的状态码,以百度为例,如果该IP访问百度后,返回的状态码为200时,说明该地阿里可以使用
        try:
            response = proxie.get(url='https://www.baidu.com', proxies=proxie, timeout=2)
            if response.status_code == 200:  
                # 将该代理以文本形式保存起来
                file = open('E:\脚本\IPPrioxy_Pool\IP.txt', 'a+')
                file.write(str(proxie) + "\n")
        except:
                #输出代理信息
            print('当前代理:', proxie, '不可使用')
        # 输出代理信息
        else:
            print('当前代理:', proxie, '可以使用')
    return user_ok

爬取数据网站来源

# 创建列表用于存储数据
proxies_list = []
# 遍历网页数据
for page in range(1, 10): #以一到十页测试
    # 输出爬取页数
    print(f"正在爬取第{page}页") #{page}为字符串拼接
    time.sleep(1) #休眠一秒
    url = 'http://www.kxdaili.com/dailiip/2/{page_turn}.html'.format(page_turn=page)  
    # 以开心代理测试获取数据
    # 设置浏览器标识
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'}
    # 构造请求
    response = requests.get(url=url, headers=headers)
    # 指定一个编码 = 获取一个编码
    response.encoding = response.apparent_encoding
    # 获取页面数据
    html_data = response.text
    #print(html_data)
    # 使用xpath 方法解析html页面
    # 转换数据类型
    selector = parsel.Selector(html_data)  
    #print(selector) #测试数据运行
    trs = selector.xpath('//table/tbody/tr')
    #print(trs) # 测试字符串
    # 将拼接好的完整地址保存在一个名为proxies_list的列表中
    # 遍历每一个tr标签
    i = 0 #开心代理url设置需要单独页码进行定位
    for tr in trs:
        i+=1
        ip = tr.xpath(f'//table/tbody/tr[{i}]/td[1]/text()').get()
        adr = tr.xpath(f'//table/tbody/tr[{i}]/td[2]/text()').get()
        print(ip,adr)
        proxies_dict = {
            # 字符串的拼接
            "http":  ip + ":" + adr,
            "https":  ip + ":" + adr,
        }
        proxies_list.append(proxies_dict)
        print('获取成功', proxies_dict)
print(proxies_list)
print('获取的代理数据为:', len(proxies_list))
# proxies_list.append(proxies_dict)
print('开始检测代理')
user_ok = check_ip(proxies_list)
# 输出信息用以提示
print('可以使用的代理:', user_ok)
print('可以使用的代理数量为:', len(user_ok))

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值