Python采集代理ip并判断是否可用和定时更新的方法
作者:lilongsy 发布时间:2022-12-01 15:19:05
标签: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)
来源:https://blog.csdn.net/lilongsy/article/details/76034209


猜你喜欢
- 如何生成任意n阶的三对角矩阵数学作业要求实现共轭梯度法的算法。题目中的矩阵A是n=400/500/600的三对角矩阵。在网上查阅资料未果后,
- 本文实例讲述了Python回调函数用法。分享给大家供大家参考。具体分析如下:一、百度百科上对回调函数的解释:回调函数就是一个通过函数指针调用
- 目录一、任务二、实现(1)导库并创建画布(2)画图形(3)创建按钮和文本框(4)功能实现三、完整代码四、升级—绑定键盘事件总结一、任务用多个
- TensorFlow保存模型代码import tensorflow as tffrom tensorflow.python.framewor
- ES6 开始,js 新增了剩余参数语法、展开语法等,它们有个共同之处就是都以 ... 这么个符号为前缀,好像很多地方都可以用到,但实际上又不
- BN与Dropout共同使用出现的问题BN和Dropout单独使用都能减少过拟合并加速训练速度,但如果一起使用的话并不会产生1+1>2
- 现如今各种APP、微信订阅号、微博、购物网站等网站都允许用户发表一些个人看法、意见、态度、评价、立场等信息。针对这些数据,我们可以利用情感分
- 大家是否经常遇到在关闭网页的时候,会看到一个确定是否离开当前页面的提示框?想一些在线测试系统、信息录入系统等就经常会有这一些提示,避免用户有
- 游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次以行或者多行前进或向后浏览数据的能力。我们
- 下载,安装先检查系统中是否有mysql ,MariaDB,如有,先卸载rpm -qa | grep mysqlrpm -qa | grep
- 阅读文本前请参考此文章的数据表结构Django提供了两个非常有用的工具:F对象和Q对象,方便了在一些特殊场景下的查询过程。1.F对象查询F对
- 最近看Python看得都不用tab键了,哈哈。今天看了一个经典问题--八皇后问题,说实话,以前学C、C++的时候有这个问题,但是当时不爱学,
- 前言有一天朋友A向我抱怨,他的老板要求他把几百份word填好的word表格简历信息整理到excel中,看着他一个个将姓名,年龄……从word
- MySQL清空表数据清空表数据一共有三种方式1 、truncate (速度很快) 自增字段清空从1开始 全表清空首选2、drop 直接删表&
- <div style=" position: fixed; width: 100%; height: 100%; left:
- 其实我这样做的本意是为了防止盗链!大家帮忙看一下通过代码能够根治盗链!只要不是HTTP_REFERER来源于(google.com goog
- 1 事务的使用1.1 事务概念事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体
- 1.查询当前年、月、周相关时间1.1.查询当前年份SELECT TO_CHAR(SYSDATE,'YYYY') AS YEA
- 需求:Python检测URL状态,并追加保存200的URL代码一:#! /usr/bin/env python#coding=utf-8im
- 我搜集了国内10几个电影网站的数据,里面近几十W条记录,用文本没法存,mongodb学习成本非常低,安装、下载、运行起来不会花你5分钟时间。