Python采集代理ip并判断是否可用和定时更新的方法


Posted in Python onMay 07, 2018

网上有很多免费的ip地址,都是可以使用的,但是如果手动来获取太麻烦,这里通过Python自动抓取,可以批量获取。

代码如下:

# -*- coding: utf-8 -*-
import re
import urllib2
import json
import os
import time
import socket

class ProxyIp(object):
  def __init__(self):
    self.path = os.path.split(os.path.realpath(__file__))[0]
  # Get latest proxy ip and download to json
  def update_ip(self):
    print 'Update Ip'
    url = 'http://www.ip3366.net/free/'
    req = urllib2.Request(url)
    response = urllib2.urlopen(req)
    matches = re.findall(
      ur'(\d+.\d+.\d+.\d+)</td>\s+<td>(\d+)</td>\s+<td>.*?</td>\s+<td>(HTTPS?)</td>',
      response.read(),
      re.I
    )
    ls = []
    for match in matches:
      if self.is_open(match[0], match[1]):
        ls.append({'ip':match[0], 'port':match[1], 'protocol': match[2]})
    with open('%s/ip.json' % self.path, 'w') as f:
      json.dump(ls, f)
    return ls
  # whether the ips is last or old.
  def is_last(self):
    m_time = int(os.path.getmtime('%s/ip.json' % self.path))
    now_time = int(time.time())
    return (now_time - m_time) > 60*60*4 # 4 hours
  @staticmethod
  def is_open(ip, port):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
      s.connect(ip, int(port))
      return True
    except:
      print 'Faild IP: %s:%s' % (ip, port)
      return False
  def get_proxy_ips(self):
    if not self.is_last():
      return self.update_ip()
    else:
      with open('%s/ip.json' % self.path, 'r') as f:
        return json.load(f)

以上这篇Python采集代理ip并判断是否可用和定时更新的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python判断端口是否打开的实现代码
Feb 10 Python
python比较2个xml内容的方法
May 11 Python
Python函数式编程指南(二):从函数开始
Jun 24 Python
Python的Django框架可适配的各种数据库介绍
Jul 15 Python
机器学习之KNN算法原理及Python实现方法详解
Jul 09 Python
Python爬虫之pandas基本安装与使用方法示例
Aug 08 Python
python简单验证码识别的实现方法
May 10 Python
简单了解python的break、continue、pass
Jul 08 Python
用python介绍4种常用的单链表翻转的方法小结
Feb 24 Python
通过自学python能找到工作吗
Jun 21 Python
python实现数据结构中双向循环链表操作的示例
Oct 09 Python
Python djanjo之csrf防跨站攻击实验过程
May 14 Python
利用python的socket发送http(s)请求方法示例
May 07 #Python
Python爬虫抓取代理IP并检验可用性的实例
May 07 #Python
Python视频爬虫实现下载头条视频功能示例
May 07 #Python
十分钟利用Python制作属于你自己的个性logo
May 07 #Python
Redis使用watch完成秒杀抢购功能的代码
May 07 #Python
Python文本统计功能之西游记用字统计操作示例
May 07 #Python
Python中的函数作用域
May 07 #Python
You might like
php 解决旧系统 查出所有数据分页的类
2012/08/27 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
Yii 框架控制器创建使用及控制器响应操作示例
2019/10/14 PHP
JavaScript中数组对象的那些自带方法介绍
2013/03/12 Javascript
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
webapp框架AngularUI的demo改造之路
2014/12/21 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
2016/02/02 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
2016/06/13 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
jQuery实现移动端Tab选项卡效果
2017/03/15 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
JS库中的Particles.js在vue上的运用案例分析
2017/09/13 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
2017/10/11 Javascript
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
脚手架vue-cli工程webpack的基本用法详解
2018/09/29 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
js实现上传按钮并显示缩略图小轮子
2020/05/04 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
Shopee印度尼西亚:东南亚与台湾市场最大电商平台
2018/06/17 全球购物
幼儿园亲子活动方案
2014/01/29 职场文书
学习2014年全国两会心得体会
2014/03/12 职场文书
中学生操行评语
2014/04/24 职场文书
小学校园广播稿(3篇)
2014/09/19 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
学雷锋广播稿大全
2015/08/19 职场文书
小学音乐课教学反思
2016/02/18 职场文书