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中Genarator函数用法分析
Apr 08 Python
django 常用orm操作详解
Sep 13 Python
python按时间排序目录下的文件实现方法
Oct 17 Python
django解决跨域请求的问题详解
Jan 20 Python
python-tkinter之按钮的使用,开关方法
Jun 11 Python
python实战串口助手_解决8串口多个发送的问题
Jun 12 Python
python 定时器每天就执行一次的实现代码
Aug 14 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
Dec 04 Python
Python脚本实现Zabbix多行日志监控过程解析
Aug 26 Python
pymongo insert_many 批量插入的实例
Dec 05 Python
opencv读取视频并保存图像的方法
Jun 04 Python
如何用python清洗文件中的数据
Jun 18 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/12/06 PHP
通俗易懂的php防注入代码
2010/04/07 PHP
PHP+jQuery+Ajax实现用户登录与退出
2015/04/27 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
2015/12/10 PHP
thinkPHP框架中layer.js的封装与使用方法示例
2019/01/18 PHP
Input 特殊事件onpopertychange和oninput
2009/06/17 Javascript
javascript hashtable实现代码
2009/10/13 Javascript
在vs2010中调试javascript代码方法
2011/02/11 Javascript
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
javascript实现iframe框架延时加载的方法
2014/10/30 Javascript
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
js简单实现点击左右运动的方法
2015/04/10 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
Python实现的一个找零钱的小程序代码分享
2014/08/25 Python
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
python 实现返回一个列表中出现次数最多的元素方法
2019/06/11 Python
python如何保证输入键入数字的方法
2019/08/23 Python
python 实现多维数组(array)排序
2020/02/28 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
计算机科学技术自荐信
2014/06/12 职场文书
妇女工作先进事迹
2014/08/17 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL