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的几种开发工具介绍
Mar 07 Python
在Python中调用ggplot的三种方法
Apr 08 Python
使用Python写CUDA程序的方法
Mar 27 Python
python绘制中国大陆人口热力图
Nov 07 Python
FFrpc python客户端lib使用解析
Aug 24 Python
tensorflow中tf.slice和tf.gather切片函数的使用
Jan 19 Python
TensorFlow内存管理bfc算法实例
Feb 03 Python
Python使用configparser库读取配置文件
Feb 22 Python
Django Form常用功能及代码示例
Oct 13 Python
Python os库常用操作代码汇总
Nov 03 Python
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
Nov 11 Python
python manim实现排序算法动画示例
Aug 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中的正规表达式(二)
2006/10/09 PHP
php中日期加减法运算实现代码
2011/12/08 PHP
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
PHP学习记录之数组函数
2018/06/01 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
JavaScript更改class和id的方法
2008/10/10 Javascript
基于Jquery的简单&amp;简陋Tabs插件代码
2010/02/09 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
微信小程序 五星评价功能的实现
2017/03/09 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
2018/05/14 Javascript
vue.js 实现点击按钮动态添加li的方法
2018/09/07 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
解决Vue watch里调用方法的坑
2020/11/07 Javascript
对pandas的dataframe绘图并保存的实现方法
2017/08/05 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
2018/05/24 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
Django contrib auth authenticate函数源码解析
2020/11/12 Python
Linux面试题LINUX系统类
2014/11/19 面试题
初三家长会邀请函
2014/01/18 职场文书
诚信的演讲稿范文
2014/05/12 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
2019入党申请书格式
2019/06/25 职场文书
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python
pt-archiver 主键自增
2022/04/26 MySQL