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


本文摘自php中文网,作者不言,侵删。

这篇文章主要介绍了关于Python采集代理ip并判断是否可用和定时更新的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

网上有很多免费的ip地址,都是可以使用的,但是如果手动来获取太麻烦,这里通过Python自动抓取,可以批量获取。

代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

# -*- 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采集--数据的储存

python采集博客中上传的QQ截图文件

以上就是Python采集代理ip并判断是否可用和定时更新的方法的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python框架是什么?有哪些?

Python实现有序字典的详细介绍(附代码)

一款对Python初学者友好的编辑器

Python怎么打开使用

回味Python基本数据类型

Python如何实现字典上对数据执行计算

用例子一文详解Python正则表达式的语法

Python对mysql数据库操作的实例详解

Python如何编写安卓程序

Python抽象类有什么用

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...