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的Scrapy框架编写web爬虫的简单示例
Apr 17 Python
Python统计日志中每个IP出现次数的方法
Jul 06 Python
Python实现简单的语音识别系统
Dec 13 Python
python使用Tkinter实现在线音乐播放器
Jan 30 Python
TensorFlow打印tensor值的实现方法
Jul 27 Python
PyQt5 多窗口连接实例
Jun 19 Python
如何爬取通过ajax加载数据的网站
Aug 15 Python
Python魔法方法 容器部方法详解
Jan 02 Python
Python decorator拦截器代码实例解析
Apr 04 Python
Python pip安装模块提示错误解决方案
May 22 Python
Python flask框架如何显示图像到web页面
Jun 03 Python
python中的random模块和相关函数详解
Apr 22 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
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
说明的比较细的php 正则学习实例
2008/07/30 PHP
PHP中去除换行解决办法小结(PHP_EOL)
2011/11/27 PHP
PHP中使用xmlreader读取xml数据示例
2014/12/29 PHP
PHP rsa加密解密使用方法
2015/04/27 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
JavaScript中利用各种循环进行遍历的方式总结
2015/11/10 Javascript
javascript中tostring()和valueof()的用法及两者的区别
2015/11/16 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
2018/08/07 Javascript
js中值引用和地址引用实例分析
2019/06/21 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
python实现百万答题自动百度搜索答案
2018/01/16 Python
Python2.7 实现引入自己写的类方法
2018/04/29 Python
Python字符串、整数、和浮点型数相互转换实例
2018/08/04 Python
使用python Telnet远程登录执行程序的方法
2019/01/26 Python
python lambda表达式在sort函数中的使用详解
2019/08/28 Python
Python with语句和过程抽取思想
2019/12/23 Python
Python类的动态绑定实现原理
2020/03/21 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
vivo智能手机官方商城:vivo
2016/09/22 全球购物
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
杭州-DOTNET笔试题集
2013/09/25 面试题
同事吵架检讨书
2014/02/05 职场文书
《动手做做看》教学反思
2014/04/09 职场文书
户籍证明模板
2014/09/28 职场文书
群众路线教育实践活动民主生活会个人检查对照思想汇报
2014/10/04 职场文书
远程教育学习心得体会
2016/01/23 职场文书
基于python实现银行管理系统
2021/04/20 Python
java设计模式--原型模式详解
2021/07/21 Java/Android
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python