当前位置: 首页 > 编程笔记 >

Python采集代理ip并判断是否可用和定时更新的方法

孟佑运
2023-03-14
本文向大家介绍Python采集代理ip并判断是否可用和定时更新的方法,包括了Python采集代理ip并判断是否可用和定时更新的方法的使用技巧和注意事项,需要的朋友参考一下

网上有很多免费的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判断ip是否可达的实例详解,包括了对python判断ip是否可达的实例详解的使用技巧和注意事项,需要的朋友参考一下 python中使用subprocess来使用shell 关于threading的用法 改良 :使用Queue来优化(FIFO) 以上这篇对python判断ip是否可达的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程

  • 本文向大家介绍使用python验证代理ip是否可用的实现方法,包括了使用python验证代理ip是否可用的实现方法的使用技巧和注意事项,需要的朋友参考一下 在使用爬虫爬取网络数据时,如果长时间对一个网站进行抓取时可能会遇到IP被封的情况,这种情况可以使用代理更换ip来突破服务器封IP的限制。 随手在百度上搜索免费代理IP,可以得到一系列的网站,这里我们通过对西刺网站的抓取来举例。 通过编写一个爬虫

  • 本文向大家介绍C#判断ip地址是否可以ping的通,包括了C#判断ip地址是否可以ping的通的使用技巧和注意事项,需要的朋友参考一下

  • 本文向大家介绍Python判断变量是否已经定义的方法,包括了Python判断变量是否已经定义的方法的使用技巧和注意事项,需要的朋友参考一下 Python判断变量是否已经定义是一个非常重要的功能,本文就来简述这一功能的实现方法。 其实Python中有很多方法可以实现判断一个变量是否已经定义了。这里就举出最常用的两种作为示例,如下所示: 方法一:try except方法: 用法: 方法二:使用命名空间

  • 本文向大家介绍python判断一个对象是否可迭代的例子,包括了python判断一个对象是否可迭代的例子的使用技巧和注意事项,需要的朋友参考一下 如何判断一个对象是可迭代对象? 方法是通过collections模块的Iterable类型判断: 以上这篇python判断一个对象是否可迭代的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍C# 获取IP及判断IP是否在区间,包括了C# 获取IP及判断IP是否在区间的使用技巧和注意事项,需要的朋友参考一下 话不多说,请看代码: 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!