练习--爬取xici可用代理IP

摘要:
Xici可以使用的代理IP端口的主要代码是:#!

通过爬虫实现xici可以使用的代理IP 端口

主要代码:

#!/usr/bin/env python 
#coding:utf8
import telnetlib
from urllib import  request
import re

class getXici():
    def __init__(self):
        self.url = "http://www.xicidaili.com"
        self.header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36'}
        self.page = ""


    def get_page(self):
        req = request.Request(url=self.url,headers=self.header)
        page = request.urlopen(req).read().decode('utf-8')
        self.page = page

    def is_available(self,ip, port):
        try:
            t = telnetlib.Telnet(ip, port)
        except Exception as e:
            status = 0
            return  status
        status =  1
        return status

    def get_ip_list(self):
        # print(self.page)
        # proxy_type = r'<th colspan="8">.*?<h2>(.*?)</h2>'
        # proxy_reg = re.compile(proxy_type,re.S)
        # proxy_text = proxy_reg.findall(self.page)
        # print(proxy_text)
        proxy_reg = re.compile(r'<td class="country"><img src="http://t.zoukankan.com/(.*?)" alt="Cn" /></td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td class="country">(.*?)</td>',re.S)
        print(proxy_reg)
        proxy_list = proxy_reg.findall(self.page)
        for line in proxy_list:
            # print(line)
            data = list(line)
            # print(data)
            flag = self.is_available(data[1],data[2])
            if flag == 1:
                print(" {0} {1} {2} 可以使用 ".format(data[1],data[2],data[3]))

if __name__ == "__main__":
    xici = getXici()
    xici.get_page()
    xici.get_ip_list()

运行结果:

练习--爬取xici可用代理IP第1张

随机抽取一个验证是否可用:

练习--爬取xici可用代理IP第2张

免责声明:文章转载自《练习--爬取xici可用代理IP》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[转]如何利用ndk-stack工具查看so库的调用堆栈【代码示例】?Windows 查看某个端口号是否被占用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CentOS PostgreSQL 12 主从复制(主从切换)

主从复制1.基于文件的日志传送 创建一个高可用性(HA)集群配置可采用连续归档,集群中主服务器工作在连续归档模式下,备服务器工作在连续恢复模式下(1台或多台可随时接管主服务器),备持续从主服务器读取WAL文件。 连续归档不需要对数据库表做任何改动,可有效降低管理开销,对主服务器的性能影响也相对较低。 直接从一个数据库服务器移动WAL记录到另一台服务器被称为...

Python爬取酷狗飙升榜前十首(100)首,写入CSV文件

酷狗飙升榜,写入CSV文件 爬取酷狗音乐飙升榜的前十首歌名、歌手、时间,是一个很好的爬取网页内容的例子,对爬虫不熟悉的读者可以根据这个例子熟悉爬虫是如何爬取网页内容的。 需要用到的库:requests库、BeautifulSoup库、time库; 请求头:'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) A...

资产管理 cmdb之ansible 获取服务器硬件、软件等信息

    cmdb抓取服务信息的方式有很多种,可以使用自动化工具saltstack、ansible、puppet,或者使用其它模块直接ssh远程连接抓取服务器信息。这里记录一下用ansible的API接口调用setup模块抓取。 实验使用两台机器 IP 系统 软件 192.168.93.137 centos6.5_x64 ansible 1.9.4...

Vue.js 教程

1.vue.js主题结构如下: <!--Create by syd on 2018/9/4 17:07.--> <html len="en"> <header> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />...

jQuery中的ajax

jQuery对Ajax操作进行了封装,在jQuery中$.ajax()方法属于最底层的方法,第2层是load()、$.get()和$.post()方法,第3层是$.getScript()和$.getJSON()方法。第2层的方法使用频率最高。 1. load()方法 1.1  载入HTML文档 load()方法是jQuery中最为简单和常用的Ajax方法,...

旋转机械故障诊断公开数据集整理

转自:https://blog.csdn.net/hustcxl/article/details/89394428 旋转机械故障诊断公开数据集整理众所周知,当下做机械故障诊断研究最基础的就是数据,再先进的方法也离不开数据的检验。笔者通过文献资料收集到如下几个比较常用的数据集并进行整理。鉴于目前尚未见比较全面的数据集整理介绍。数据来自原始研究方,笔者只整理数...