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 09 Python
在Python中定义和使用抽象类的方法
Jun 30 Python
python中子类调用父类函数的方法示例
Aug 18 Python
使用python为mysql实现restful接口
Jan 05 Python
Tensorflow 查看变量的值方法
Jun 14 Python
python使用Turtle库绘制动态钟表
Nov 19 Python
Python给定一个句子倒序输出单词以及字母的方法
Dec 20 Python
python正则表达式去除两个特殊字符间的内容方法
Dec 24 Python
JupyterNotebook设置Python环境的方法步骤
Dec 03 Python
python 如何利用argparse解析命令行参数
Sep 11 Python
Python学习工具jupyter notebook安装及用法解析
Oct 23 Python
python中使用asyncio实现异步IO实例分析
Feb 26 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 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
2019/05/06 PHP
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
2013/11/15 Javascript
聊一聊JavaScript作用域和作用域链
2016/05/03 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
深入了解Vue3模板编译原理
2020/11/19 Vue.js
webpack4从0搭建组件库的实现
2020/11/29 Javascript
[29:10]Ti4 冒泡赛第二天 NEWBEE vs Titan 3
2014/07/15 DOTA
使用Python从零开始撸一个区块链
2018/03/14 Python
Python中GIL的使用详解
2018/10/03 Python
python3 读取Excel表格中的数据
2018/10/16 Python
深入理解Python异常处理的哲学
2019/02/01 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
2019/06/26 Python
pyautogui自动化控制鼠标和键盘操作的步骤
2020/04/01 Python
解决windows下python3使用multiprocessing.Pool出现的问题
2020/04/08 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
2020/04/27 Python
Python 如何在字符串中插入变量
2020/08/01 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
Mio Skincare中文官网:肌肤和身体护理
2016/10/26 全球购物
全球知名的珠宝首饰品牌:Kay Jewelers
2018/02/11 全球购物
网络教育自我鉴定
2013/11/01 职场文书
优秀共产党员先进事迹
2014/01/27 职场文书
《走一步再走一步》教学反思
2014/02/15 职场文书
伊索寓言教学反思
2014/05/01 职场文书
企业活动策划方案
2014/06/02 职场文书
大学生创业计划书
2014/08/14 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
综合素质评价自我评价
2015/03/06 职场文书
2015年入党积极分子培养考察意见
2015/08/12 职场文书
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js
搞笑Gif:这么白这么长的腿像极了一楼的女朋友
2022/03/21 杂记