Python采集代理ip并判断是否可用和定时更新的方法
作者:lilongsy 时间:2022-12-01 15:19:05
网上有很多免费的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
标签:python,采集,代理ip,更新
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
MySQL中SQL命令语句条件查询实例详解
2024-01-12 19:45:48
![](https://img.aspxhome.com/file/2023/5/92755_0s.png)
JS代码的格式化和压缩
2007-10-17 21:17:00
Vue.js中v-bind指令的用法介绍
2024-04-30 10:18:30
![](https://img.aspxhome.com/file/2023/3/130293_0s.jpg)
基于MySql的扩展功能生成全局ID
2024-01-13 07:52:58
python enumerate内置函数用法总结
2023-06-24 05:54:24
![](https://img.aspxhome.com/file/2023/0/133320_0s.png)
javascript验证只能输入数字和一个小数点示例
2024-04-22 22:29:11
Python进程间通信之共享内存详解
2022-01-06 05:47:10
C#访问SQL Server数据库的实现方法
2024-01-14 17:14:23
sql server海量数据库的查询优化及分页算法方案
2010-07-02 21:17:00
使用access数据库时可能用到的数据转换
2008-09-10 12:49:00
Python字符串和文件操作常用函数分析
2023-07-25 08:42:23
Ajax的错误处理机制探讨
2007-09-07 09:53:00
python实现Decorator模式实例代码
2022-05-10 06:04:56
基于selenium及python实现下拉选项定位select
2023-01-13 12:17:48
![](https://img.aspxhome.com/file/2023/8/93818_0s.png)
vue3动态路由刷新后空白或者404问题的解决
2023-07-02 16:58:39
java连接Oracle数据库的方法解析
2024-01-21 22:12:27
![](https://img.aspxhome.com/file/2023/4/65584_0s.png)
css分页放大镜效果
2008-11-02 15:35:00
Innodb中mysql快速删除2T的大表方法示例
2024-01-22 09:14:21
![](https://img.aspxhome.com/file/2023/5/116735_0s.jpg)
注意:php5.4删除了session_unregister函数
2023-11-24 12:31:54
通过Fckeditor把图片上传到独立图片服务器的方法
2023-11-06 20:02:24