python爬取监控数据

导语:在测试过程中,需要了解一些交易调用量、平均耗时、最大耗时、交易量分布等信息,这些信息一般会存在监控系统,如果根据交易名查询,手工操作比较多,也不好统计,怎么快速获取到一段时间内的监控数据,辅助测试呢,这里通过python快速获取多个分布式缓存key时间。

说明:

1、为方便获取数据,这里做了一些简化,没有做登录,通过chrome登录后,F12,直接获取headers和cookie;

2、为避免涉及代码纠纷,代码里面部分文本信息做了修改;

3、代码逻辑比较简单,直接看代码逻辑及注释

 

#!/usr/bin/env python
# -*-coding:utf-8-*-

import requests
from bs4 import BeautifulSoup
from  frame.lib.util.databox import DataBox
import json

class FetchCkvTime():
    def getckv(self,key=''):
        self.headers = {
            'Accept': 'application/json, text/javascript, */*; q=0.01',
            'Accept-Encoding': 'gzip, deflate, br',
            'Accept-Language': 'zh-CN,zh;q=0.9',
            'Connection': 'keep-alive',
            'Cookie': 'JSESSIONID=82F508F85DBBXX',
            'Host': 'xx.com',
            'Referer': 'xx.com'
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
            'X-Requested-With': 'XMLHttpRequest'
          }

        ckv_key = key

        self.url = 'https://xx.com/getChartData.do?ext_flat1= %s ' % (ckv_key)
        cookie_str='JSESSIONID=82F508F85DBBXX'

        self.headers['Cookie']=cookie_str
        print self.headers
        print self.url
        s = requests.session ()
        s.keep_alive = False  # 关闭多余连接
        ret=s.get(url=self.url,headers=self.headers,verify=False).text
        print ckv_key+" "+ret
        return ret

    def get_avg_costtime(self,ret_rslt):
       ret_format_to_list = json.loads (ret_rslt)
       i=1
       sum_costtime=0
       avg_costtime=0
       max_costtime=0

       for data in ret_format_to_list["result_data"]["curve1"]:
           sum_costtime=sum_costtime+data["avg_costtime"]
           #最大耗时做排序,比较后取某段时间内的最大耗时
           if max_costtime < data["avg_costtime"]:
               max_costtime=data["avg_costtime"] 
           i=i+1
           #由于返回json数据比较大,取前100条记录做平均耗时计算
           if i>100:
               break
       avg_costtime=sum_costtime/i
        #返回结果list
       return [str(avg_costtime),max_costtime]



if __name__ == "__main__":
   m=FetchCkvTime()
   res = DataBox.pick_one ('lxt', boxlabels='ckv_key', tags='ckv_key')
   i=1
   out_put_data=''
   with open ('d:\ckv_key.txt', 'ab+') as f:
      for data in res:
         out_put_data=''
         #data为key列表,循环获取key值
         ret_rslt=m.getckv(data)
         ret_format=m.get_avg_costtime (ret_rslt)
         for tt in ret_format:
             out_put_data=out_put_data+"|"+ str(tt)

         f.write(data+":"+out_put_data+'\n')
      f.close()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值