有一些情况下,我们需要获取一些Web站点的响应时间情况,并对此采取一些措施,因此自己编写了下面的程序,方便各位和自己用到时翻阅。
先说一下环境, Python3 + requests 库,可通过 pip直接安装。
使用时将需要测试的url放在url_list数组中后,即可安心的食用本程序。
[Python] 纯文本查看 复制代码 # 存储待分析的URL
url_list = [
'https://www.baidu.com',
'https://blog.csdn.net/',
'https://11www.runoob.com/'
] 运行后的截图如下:其中请求失败的在“无法请求到的网址”后面打印,其他的在“统计信息如下”后面打印。
源码文件请点击此处(解压密码:52pojie):[url=]main.zip[/url]
源码如下:[Python] 纯文本查看 复制代码 import requests
from operator import itemgetter
# 存储待分析的URL
url_list = [
'https://www.baidu.com',
'https://blog.csdn.net/',
'https://11www.runoob.com/'
]
# 请求网址, 返回响应时间
# 输入参数
# url: 网址
# time:超时时间
#返回
# 请求时间数组
def GetRequestTime(url, time=10):
ret = []
for i in range(0, time):
_t = None
try:
urlData = requests.get(url)
if urlData.status_code != 200:
_t = None
else:
_t = urlData.elapsed.total_seconds()
except Exception as err:
#print(f'err requestUrl({url})\n', err)
_t = None
if _t is not None: ret.append(_t)
return ret if ret else None
# 计算 list 的最大值、最小值、平均值
# 输入参数
# url: 网址
# list:请求时间数组
# 返回
# 包含网址、最大值、最小值、平均值的字典
def GetAnalyInfo(url,list):
if list is None: return None
_max = max(list)
_min = min(list)
_avg = sum(list)/len(list)
return {
"url":url,
'max':_max,
'min':_min,
'avg':_avg
}
# 排序算法
# 输入
# dict 请求时间字典
# cmpkey 排序key 可按照 最大值(max)、最小值(min)、平均值(avg)排序
def sortAnalyInfo(dict, cmpkey="avg"):
ret = sorted(dict, key=itemgetter(cmpkey))
return ret
if __name__ == "__main__":
reqtime = []
error_url = []
for _url in url_list:
t = GetRequestTime(_url)
reqtime.append(GetAnalyInfo(_url, t)) if t is not None else error_url.append(_url)
info = sortAnalyInfo(reqtime)
if error_url:
print("无法请求到的网址:")
for u in error_url : print(u)
print("统计信息如下:")
for i in info:
print(i)
|