wuchen2138 发表于 2019-8-21 16:40

Python获取网站请求时间

有一些情况下,我们需要获取一些Web站点的响应时间情况,并对此采取一些措施,因此自己编写了下面的程序,方便各位和自己用到时翻阅。


先说一下环境, Python3 + requests 库,可通过 pip直接安装。


使用时将需要测试的url放在url_list数组中后,即可安心的食用本程序。
# 存储待分析的URL
url_list = [
    'https://www.baidu.com',
    'https://blog.csdn.net/',
    'https://11www.runoob.com/'
]运行后的截图如下:https://attach.52pojie.cn//forum/201908/21/163100laea5rcflmwrlrr5.png?l其中请求失败的在“无法请求到的网址”后面打印,其他的在“统计信息如下”后面打印。
源码文件请点击此处(解压密码:52pojie):main.zip
源码如下: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)


页: [1]
查看完整版本: Python获取网站请求时间