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中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
使用django-crontab实现定时任务的示例
Feb 26 Python
pycharm 主题theme设置调整仿sublime的方法
May 23 Python
python使用PIL实现多张图片垂直合并
Jan 15 Python
Python提取频域特征知识点浅析
Mar 04 Python
python创造虚拟环境方法总结
Mar 04 Python
解决django服务器重启端口被占用的问题
Jul 26 Python
Python使用itchat 功能分析微信好友性别和位置
Aug 05 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
May 22 Python
Python return语句如何实现结果返回调用
Oct 15 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
Nov 15 Python
Python中np.random.randint()参数详解及用法实例
Sep 23 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生成WAP页面
2006/10/09 PHP
php计算当前程序执行时间示例
2014/04/24 PHP
整理php防注入和XSS攻击通用过滤
2015/09/13 PHP
php实现微信扫码支付
2017/03/26 PHP
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
2013/11/25 Javascript
jquery获取checkbox的值并post提交
2015/01/14 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(下)
2015/10/28 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
jQuery实现 上升、下降、删除、添加一行代码
2017/03/06 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
vue-cli 首屏加载优化问题
2018/11/06 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
详解React服务端渲染从入门到精通
2019/03/28 Javascript
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
Python3学习笔记之列表方法示例详解
2017/10/06 Python
pandas中Timestamp类用法详解
2017/12/11 Python
python2.7读取文件夹下所有文件名称及内容的方法
2018/02/24 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
Python tkinter布局与按钮间距设置方式
2020/03/04 Python
Python操作word文档插入图片和表格的实例演示
2020/10/25 Python
CSS3正方体旋转示例代码
2013/08/08 HTML / CSS
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
舒适的豪华鞋:Taryn Rose
2018/05/03 全球购物
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
领班岗位职责范文
2014/02/06 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
学校社会实践活动总结
2014/07/03 职场文书
分公司总经理岗位职责
2014/07/30 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
党支部组织生活会整改方案
2014/09/30 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
2014年作风建设工作总结
2014/10/29 职场文书
董事长秘书岗位职责
2015/02/13 职场文书