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 13 Python
Python类的继承和多态代码详解
Dec 27 Python
python学习入门细节知识点
Mar 29 Python
深入理解Django自定义信号(signals)
Oct 15 Python
Python实现计算文件MD5和SHA1的方法示例
Jun 11 Python
Win10下Python3.7.3安装教程图解
Jul 08 Python
python找出因数与质因数的方法
Jul 25 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
Aug 07 Python
opencv3/C++实现视频读取、视频写入
Dec 11 Python
Python中logger日志模块详解
Aug 04 Python
python设置中文界面实例方法
Oct 27 Python
Python环境搭建过程从安装到Hello World
Feb 05 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函数
2008/10/03 PHP
PHP Undefined index报错的修复方法
2011/07/17 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
2017/04/19 PHP
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
2015/10/19 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
2016/04/27 Javascript
微信小程序 wxapp内容组件 progress详细介绍
2016/10/31 Javascript
nodejs中向HTTP响应传送进程的输出
2017/03/19 NodeJs
Angular2中监听数据更新的方法
2018/08/31 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
Python读大数据txt
2016/03/28 Python
Python3实现的字典遍历操作详解
2018/04/18 Python
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
导入tensorflow时报错:cannot import name 'abs'的解决
2019/10/10 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
2020/02/07 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
Opencv求取连通区域重心实例
2020/06/04 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
linux面试题参考答案(2)
2015/12/06 面试题
哈弗商学院毕业生求职信
2014/02/26 职场文书
外语专业毕业生自荐信
2014/04/14 职场文书
保安公司服务承诺书
2014/05/28 职场文书
小学语文业务学习材料
2014/06/02 职场文书
爬山的活动方案
2014/08/16 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
稽核岗位职责
2015/02/10 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL
sql server 累计求和实现代码
2022/02/28 SQL Server
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
2022/08/05 Servers