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 open读写文件实现脚本
Sep 06 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
Apr 19 Python
python os用法总结
Jun 08 Python
代码详解django中数据库设置
Jan 28 Python
对Python协程之异步同步的区别详解
Feb 19 Python
python实现知乎高颜值图片爬取
Aug 12 Python
Python类中方法getitem和getattr详解
Aug 30 Python
Python+numpy实现矩阵的行列扩展方式
Nov 29 Python
利用Python脚本实现自动刷网课
Feb 03 Python
Win 10下Anaconda虚拟环境的教程
May 18 Python
PIP和conda 更换国内安装源的方法步骤
Sep 21 Python
Python学习之时间包使用教程详解
Mar 21 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导出excel格式数据问题
2014/03/11 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
php+mysql实现无限级分类
2015/11/11 PHP
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
基于jquery的设置页面文本框 只能输入数字的实现代码
2011/04/19 Javascript
分享20多个很棒的jQuery 文件上传插件或教程
2011/09/04 Javascript
JS 如果改变span标签的是否隐藏属性
2011/10/06 Javascript
获取下拉列表框的值是数组,split,$.inArray示例
2013/11/13 Javascript
JS中数组Array的用法示例介绍
2014/02/20 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
js验证上传图片的方法
2015/05/12 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
2015/07/27 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
Javascript中引用类型传递的知识点小结
2017/03/06 Javascript
js实现返回顶部效果
2017/03/10 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
2017/03/21 Javascript
socket.io学习教程之基础介绍(一)
2017/04/29 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
2017/05/11 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
js实现轮播图特效
2020/05/28 Javascript
python利用百度AI实现文字识别功能
2018/11/27 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
django的ORM操作 增加和查询
2019/07/26 Python
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
2014/09/02 HTML / CSS
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
澳洲健康食品网上商店:Aussie Health Products
2018/06/15 全球购物
皇家阿尔伯特瓷器美国官网:Royal Albert美国
2020/02/16 全球购物
大学生旷课检讨书
2014/01/22 职场文书
三年级评语大全
2014/04/23 职场文书
经济国贸专业求职信
2014/06/18 职场文书
音乐研修感悟
2015/11/18 职场文书