• 自动收集有效IP代理


    自动收集有效IP代理

    #需要的外部依赖包requests和lxml
    #自动获取的代理ip数据保存为”IP代理池.txt“
    #read_ip函数用于提取”IP代理池.txt“的数据返回类型为列表
    from lxml import etree
    import requests
    import datetime
    not_alive=0
    is_alive=0
    def rm_symbol(c1):
    new_c1=c1.replace(' ','').replace(' ','')
    return new_c1
    #------------代理ip网站数据爬取(ip+空格+port形式)------------
    def get_89ip_data():
    for i in range(1, 16):
    url = 'http://www.89ip.cn/index_{}.html'.format(i)
    res = requests.get(url)
    res.encoding = 'utf-8'
    html=etree.HTML(res.text)
    ipdress=html.xpath('//table[@class="layui-table"]/tbody/tr/td[1]/text()')
    port=html.xpath('//table[@class="layui-table"]/tbody/tr/td[2]/text()')
    ipdress=list(map(rm_symbol,ipdress))
    port=list(map(rm_symbol,port))
    data=list(zip(ipdress,port))
    for i in range(len(data)):
    ip_is_alive(data[i][0]+' '+data[i][1])
    #----------------------------------------

    #ip存活检测
    def ip_is_alive(ip_port):
    import telnetlib
    global is_alive
    global not_alive
    ip=ip_port.split(' ')[0]
    port=ip_port.split(' ')[-1]
    try:
    tn = telnetlib.Telnet(ip, port=port,timeout=2)
    except:
    print('[-] ip:{}:{}'.format(ip,port))
    not_alive+=1
    else:
    print('[+] ip:{}:{}'.format(ip,port))
    is_alive+=1
    with open('IP代理池.txt','a') as f:
    f.write(ip+':'+port+' ')

    #提取IP池的ip 以列表形式返回
    def read_ip(dress):
    with open(dress,'r') as f:
    ip_port=f.read().split(' ')[1:]
    for i in ip_port:
    if i=='':
    ip_port.remove(i)
    return ip_port

    #检测过程
    def check_ip():
    print('------------IP检测开始------------')
    print('[+]代表ip有效 [-]代表ip无效 ')
    with open('IP代理池.txt', 'w') as f:
    f.write('------------自动获取 IP代理池----------- ')
    get_89ip_data()
    with open('IP代理池.txt', 'a') as f:
    f.write('------更新时间:{}----- '.format(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')))
    print("---总共检测{}个IP 有效IP:{}个 无效IP:{}个---".format(is_alive+not_alive,is_alive,not_alive))


    check_ip()
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67

    ---------------------

  • 相关阅读:
    一个你爱,一个爱你,你选择哪一个
    Flask 中的 SQLAlchemy 使用教程
    Flas-SQLAchemy数据库操作使用学习笔记
    Flask-SQLAlchemy获取一个字段里去掉重复的数据
    Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
    pycharm快捷键、常用设置、包管理
    [原创]python MySQLdb在windows环境下的安装、出错问题以及解决办法
    Highcharts下载与使用_数据报表图
    Markdown入门指南-指间阁
    Sublime Text3 配置markdown插件
  • 原文地址:https://www.cnblogs.com/ly570/p/11211009.html
Copyright © 2020-2023  润新知