第一种方法是使用telnetlib

import telnetlib
import requests
from lxml import etree

#解析此url页面的IP
url = 'http://ip.geiwoxiao.com/'
headers = {
    'User-Agent':'User-Agent:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;'
}

#使用requests请求指定页面,返回html页面
html = requests.get(url=url,headers=headers).text

#使用xpath解析数据,拿到IP及端口
tree = etree.HTML(html)
ip_text = tree.xpath('/html/body/div[5]/p[2]/text()')[0]
ip_list = ip_text.split('\r\n')

#循环ip_list,取出每个IP做检测是否可用
for i in ip_list:
    ip,port = i.split(':')
    print(ip,port)
    try:
        telnetlib.Telnet(ip,port,timeout=5)
        print('可用')
    except Exception as e:
        print(e,'不可用')

第二种方法

from lxml import etree
import requests

#解析此url页面的IP
url = 'http://ip.geiwoxiao.com/'
#使用requests请求指定页面,返回html页面
html = requests.get(url=url).text
headers = {
    'User-Agent':'User-Agent:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;'
}
#使用xpath解析数据,拿到IP及端口
tree = etree.HTML(html)
ip_text = tree.xpath('/html/body/div[5]/p[2]/text()')[0]
ip_list = ip_text.split('\r\n')
use_ip = []
#循环ip_list,取出每个IP做检测是否可用
for ip in ip_list:
    try:
        res = requests.get(url='http://icanhazip.com/',proxies={'http':ip},timeout=5).text
        print(res.strip())
        if res.strip() in ip:
            print(ip,'可用')
            #将可用IP添加到列表中
            use_ip.append(ip)
        else:
            print(ip,'不可用')
    except Exception as e:
        print(ip,'超时')
#查看可用的use_ip
print(use_ip)
02-11 07:15