使用python爬去kibana数据

import requests
from  openpyxl import Workbook

#看了网上很多博文,说头部这又'Content-Type': 'application/json;charset=UTF-8',post方法传递传输需要使用json.dumps(data)


header = {'kbn-version': '4.5.0', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36', 'cookie': 'csrftoken=UmjrC0mgAoenYthZfgwEKXNMyesESsGSLhxhl0lyWxkuUWj4NtPULYswA8kfXCsZ', 'Content-Type': 'application/json;charset=UTF-8'}

#kibana的post传输参数是用payload,样式如下,这样直接用 [] ,或者 {} 中间都需要加 , 。 而且使用charles查看url发现参数不对

#最后直接使用""" """,发现post方法返回成功

data1 = '''{"index":["nginx-access-log_nginx_2019-02-02","nginx-access-log_nginx_2019-02-03","nginx-access-log_nginx_2019-01-31","nginx-access-log_nginx_2019-02-04","nginx-access-log_nginx_2019-01-30","nginx-access-log_nginx_2019-02-05","nginx-access-log_nginx_2019-02-10","nginx-access-log_nginx_2019-02-11","nginx-access-log_nginx_2019-02-01","nginx-access-log_nginx_2019-02-12","nginx-access-log_nginx_2019-01-29","nginx-access-log_nginx_2019-02-06","nginx-access-log_nginx_2019-02-07","nginx-access-log_nginx_2019-02-08","nginx-access-log_nginx_2019-02-09"],"search_type":"count","ignore_unavailable":true}
{"size":0,"query":{"filtered":{"query":{"query_string":{"query":"host:update.jss.com.cn","analyze_wildcard":true}},"filter":{"bool":{"must":[{"range":{"@timestamp":{"gte":1548726054048,"lte":1549935654048,"format":"epoch_millis"}}}],"must_not":[]}}}},"aggs":{"2":{"date_histogram":{"field":"@timestamp","interval":"1s","time_zone":"Asia/Shanghai","min_doc_count":1,"extended_bounds":{"min":1548726054048,"max":1549935654048}}}}}
'''


url = 'http://*.*.*.*:5601/elasticsearch/_msearch?timeout=0&ignore_unavailable=true&preference=1549935348178'
r = requests.post(url=url, headers=header, data=data1)
false = "null"

#eval能把类型是字符串的字典转化为字典或者列表
result_arr = eval(r.content.decode())


cout_arr = result_arr['responses'][0]["aggregations"]["2"]["buckets"]

#这是使用openpyxl模块,把响应数据写入xls表格中
wb = Workbook()
ws = wb.active
for i in range(0,len(cout_arr)):
    ws.cell(row=i+1, column=1, value=cout_arr[i]['key_as_string'])
    ws.cell(row=i+1, column=2, value=cout_arr[i]['doc_count'])
wb.save('test.xls')

猜你喜欢

转载自www.cnblogs.com/ailei/p/10365211.html