练习--爬取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="(.*?)" 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()

运行结果:

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

原文地址:https://www.cnblogs.com/pythonlx/p/8325649.html

时间: 2024-08-30 04:02:11

练习--爬取xici可用代理IP的相关文章

python+scrapy 爬取西刺代理ip(一)(ubuntu环境下) -赖大大 -博客园

第一步:环境搭建 1.python2 或 python3 2.用pip安装下载scrapy框架 具体就自行百度了,主要内容不是在这. 第二步:创建scrapy(简单介绍) 1.Creating a project(创建项目) scrapy startproject 项目名称 2.Defining our item(定义我们的项目) 3.writing a spider(写spider) scrapy genspider (spider的名称)(爬取的网页) 4.writing & Configu

Python实现爬取可用代理IP

在实现爬虫时,动态设置代理IP可以有效防止反爬虫,但对于普通爬虫初学者需要在代理网站上测试可用代理IP.由于手动测试过程相对比较繁琐,且重复无用过程故编写代码以实现动态抓取可用的代理IP.动态代理IP保存在Json文件中,以供后续具体项目爬虫使用,但所爬取的代理IP是免费IP,所以可能出现当时爬取能用,过一段时间无法使用的情况. 1) 先从西刺代理网站上爬取前10页,速度较快的IP,保存到proxies数组中,其中proxy使用的是requests.get()可直接使用字典格式 1 print(

scrapy爬取西刺网站ip

# scrapy爬取西刺网站ip # -*- coding: utf-8 -*- import scrapy from xici.items import XiciItem class XicispiderSpider(scrapy.Spider): name = "xicispider" allowed_domains = ["www.xicidaili.com/nn"] start_urls = ['http://www.xicidaili.com/nn/']

python扫描proxy并获取可用代理ip列表

mac或linux下可以work的代码如下: # coding=utf-8 import requests import re from bs4 import BeautifulSoup as bs import Queue import threading import random import re headers_useragents = [] headers_referers = [] headers_referers.append('http://www.google.com/?q=

python2.7爬取可用代理IP

import urllib2 import random import time import re #from lxml import etree  #第三方模块 def get_proxy(page): headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36' } r

【Python脚本】-Python查找可用代理IP

在用Python爬虫时,我们有时会用到IP代理.无意中发现一个免费代理IP的网站:http://www.xicidaili.com/nn/.但是,发现很多IP都用不了.故用Python写了个脚本,该脚本可以把能用的代理IP检测出来.脚本如下: #encoding=utf8 import urllib2 from bs4 import BeautifulSoup import urllib import socket User_Agent = 'Mozilla/5.0 (Windows NT 6.

爬取xici代理

导入模块 import requests from requests import ConnectionError import random import re 定义headers生成器 def get_header(): USER_AGENT_LIST = [ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1", &qu

scrapy中使用代理IP爬取数据时遇到IP失效时自动切换的方法

当使用临时的IP请求数据时,由于这些IP的过期时间极短,通常在1分钟~5分钟左右,这时scrapy就会报发以下错误 2020-01-17 17:00:48 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://xxxx/co s): Connection was refused by other side: 10061: 由于目标计算机积极拒绝,无法连接.. 这时如何自动切换IP,然后重新请求呢? 先看看scrapy的

python代理池的构建1——代理IP类的构建,以及配置文件、日志文件、requests请求头

一.整体结构 二.代理IP类的构建(domain.py文件) ''' 实现_ init_ 方法, 负责初始化,包含如下字段: ip: 代理的IP地址 port:代理IP的端口号 protocol: 代理IP支持的协议类型,http是0, https是1, https和http都支持是2 nick_ type: 代理IP的匿名程度,高匿:0,匿名: 1,透明:2 speed:代理IP的响应速度,单位s area:代理IP所在地区 score:代理IP的评分,用于衡量代理的可用性;默认分值可以通过配