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操作Elasticsearch数据索引的教程
Apr 08 Python
浅谈python中的实例方法、类方法和静态方法
Feb 17 Python
python通过pip更新所有已安装的包实现方法
May 19 Python
python正则表达式re之compile函数解析
Oct 25 Python
查看python下OpenCV版本的方法
Aug 03 Python
python通过SSH登陆linux并操作的实现
Oct 10 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
Feb 16 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
May 09 Python
Python pysnmp使用方法及代码实例
Aug 24 Python
python与c语言的语法有哪些不一样的
Sep 13 Python
python中count函数知识点浅析
Dec 17 Python
教你使用pyinstaller打包Python教程
May 27 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
对squid中refresh_pattern的一些理解和建议
2009/04/17 PHP
PHP分页详细讲解(有实例)
2013/10/30 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
2015/04/15 PHP
PHP技术开发微信公众平台
2015/07/22 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
Javascript 刷新全集常用代码
2009/11/22 Javascript
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
JS简单设置下拉选择框默认值的方法
2016/08/20 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
2016/10/24 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
2017/08/24 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
jQuery--遍历操作实例小结【后代、同胞及过滤】
2020/05/22 jQuery
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
JavaScript中的Proxy对象
2020/11/27 Javascript
Python中用startswith()函数判断字符串开头的教程
2015/04/07 Python
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
Python实现读取文件最后n行的方法
2017/02/23 Python
Python中的__slots__示例详解
2017/07/06 Python
Python正则表达式知识汇总
2017/09/22 Python
深入理解Python中的super()方法
2017/11/20 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
2018/02/18 Python
python求最大值最小值方法总结
2019/06/25 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
python源文件的字符编码知识点详解
2021/03/04 Python
美国大码时尚女装购物网站:ELOQUII
2017/12/28 全球购物
同程旅游英文网站:LY.com
2018/11/13 全球购物
环境工程求职简历的自我评价范文
2013/10/24 职场文书
医学院毕业生自荐信范文
2014/03/06 职场文书
介绍信如何写
2015/01/31 职场文书
副总经理岗位职责范本
2015/04/08 职场文书
李白经典诗之一:全文无一“月”字,却句句有月
2019/07/12 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书