最近做一个项目是解析XML文件,提取其中的chatid和lt、timestamp等信息,存到excel里。
1.解析xml,提取数据
使用python自带的xml.dom中的minidom(也可以用lxml)
xml文件如下:
minidom.parse()#解析文件,返回DOM对象
_get_documentElement()DOM是树形结构,获得了树形结构的根节点
getElementsByTagName()根据name查找根目录下的子节点
getAttribute()获取DOM节点的属性的值
提取的代码如下:
class get_xml():
#加载获取xml的文档对象
def __init__(self,address):
#解析address文件,返回DOM对象,address为文件地址
self.doc = minidom.parse(address)
#DOM是树形结构,_get_documentElement()获得了树形结构的根节点
self.root = self.doc._get_documentElement()
#.getElementsByTagName(),根据name查找根目录下的子节点
self.httpSample_nodes = self.root.getElementsByTagName('httpSample') def getxmldata(self): data_list=[]
j = -1
responseData_node = self.root.getElementsByTagName("responseData")
for i in self.httpSample_nodes:
j = j+1
#getAttribute(),获取DOM节点的属性的值
if i.getAttribute("lb") == "发送信息":
a = 'chatId":"(.*?)"'
elif i.getAttribute("lb") == "接收信息":
# a = "chatId%3A%22(.*?)%22"
a = "info%3A%22(.*?)%22"
if (i.getAttribute("lb") == "发送信息" or i.getAttribute("lb") == "接收信息") and i.getAttribute("rc") == "200":
try:
#使用re包里面的方法,通过正则表达式提取数据
b = re.search(a, responseData_node[j].firstChild.data)
if b is not None:
d = b.group(1)
print("d:",d)
data_list.append((d, i.getAttribute("ts"), i.getAttribute("lt"),i.getAttribute("lb")))
except:
pass
return data_list
2.存储为Excel,导出数据到Excel
用到的包openpyxl,openpyxl.workbook下的Workbook()用来在内存里创建文件,最后写进磁盘的
wb = load_workbook(filename = XXXX.xlsx):读取Excel文件,文件地址为XXXX.xlsx

wb = Workbook():创建一个Workbook对象
ew = ExcelWriter(workbook = wb):新建一个excelWriter,最后用来保存
wb.create_sheet(0, 'XXX'):新建一个sheet,位置是0,sheet名字是XXX
ws = wb.worksheets[0]:打开一个sheet,sheet位置是0,即第1个sheet
ws.cell(row=1,column=1).value = XXX:在1行1列的位置加入数据XXX

ew.save(filename = XXXX.xlsx):将数据导出到本地,本地文件地址为XXXX.xlsx
一个导出Excel的例子如下:

import openpyxl
from openpyxl import writer,load_workbook
# Workbook用来在内存里创建文件最后写进磁盘的
from openpyxl.workbook import workbook, Workbook
from openpyxl.writer.excel import ExcelWriter from openpyxl.cell import get_column_letter
# if __name__ == "__main__":
def importexcel(match,dest_filename):
if(os.path.exists(dest_filename)):
wb = load_workbook(filename=dest_filename)
else:
wb = Workbook()
ew = ExcelWriter(workbook = wb)
#创建一个新sheet
wb.create_sheet(0, '聊聊发送接收请求')
# 打开已存在的第一个sheet,也可以用get_sheet_names获得所有的sheet的名字
ws = wb.worksheets[0]
ws.title = "聊聊发送接收请求"
ws.cell('A1').value = "chartid"
ws.cell('B1').value = "接收时间戳"
ws.cell('C1').value = "发送时间戳"
ws.cell('D1').value = "时间戳差"
ws.cell('E1').value = "接收lt"
ws.cell('F1').value = "发送到接收的响应时间" l = 2
for i in match:
ws.cell(row=l,column=1).value = i['chatId']
ws.cell(row=l,column=2).value = i['accept_timestamp']
ws.cell(row=l,column=3).value = i['send_timestamp']
ws.cell(row=l,column=4).value = i['timestamp_gap']
ws.cell(row=l,column=5).value = i['accept_lt']
ws.cell(row=l,column=6).value = i['response_time']
print(i,l)
l = l+1
ew.save(filename = dest_filename)

用Python提取XML里的内容,存到Excel中的更多相关文章

  1. table内容保存到Excel中

    @{ Layout = null; } <html> <head> <title></title> </head> <body> ...

  2. VBA读取word中的内容到Excel中

    原文:VBA读取word中的内容到Excel中 Public Sub Duqu()      Dim myFile As String     Dim docApp As Word.Applicati ...

  3. 用python提取xml里面的链接源码

    因群里朋友需要提取xml地图里面的链接,就写了这个程序. 代码: #coding=utf-8 import urllib import urllib.request import re url='ht ...

  4. python爬取数据保存到Excel中

    # -*- conding:utf-8 -*- # 1.两页的内容 # 2.抓取每页title和URL # 3.根据title创建文件,发送URL请求,提取数据 import requests fro ...

  5. 用python实现批量获取Linux主机简要信息并保存到Excel中 unstable 1.1

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- #filename get_linux_info.py #获取Linux主机的信息 # titles=[' ...

  6. 「拉勾网」薪资调查的小爬虫,并将抓取结果保存到excel中

    学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候 ...

  7. python提取xml属性导入Mysql

    xml文档来自ganglia-gmond端telnet localhost 8649产生出来的文档,由于ganglia每隔一段时间就更新数据,为了永久保存数据到MySQL中,就用python写了最开始 ...

  8. python从XML里取数,遍历等

    #coding=utf-8 #通过minidom解析xml文件 import xml.dom.minidom as xmldom import os ''' XML文件读取 <?xml vers ...

  9. tomcat -web.xml里的内容

    <?xml version="1.0" encoding="UTF-8"?> <Server port="8005" sh ...

随机推荐

  1. 在react-native中使用es7语法中的decorator装饰器

    在react-native中默认使用decorator会红屏报错,需要安装一个babel插件: babel-plugin-transform-decorators-legacy 然后在根目录下的.ba ...

  2. SpringMVC的注解方式配置

    SpringMVC支持使用注解方式配置,比配置文件方式更加灵活易用,是SpringMVC使用的主流模式. 1.在配置文件中开启SpringMVC的注解 <!-- 开启包扫描 --> < ...

  3. matlab下将图片序列转化为视频文件 && 将为视频文件转化图片序列

    将图片序列转化为视频文件 程序如下: framesPath = 'E:\img\';%图像序列所在路径,同时要保证图像大小相同 videoName = 'Bolt.avi';%表示将要创建的视频文件的 ...

  4. php for 循环使用实例介绍

    for 循环用于您预先知道脚本需要运行的次数的情况. 语法 for (初始值; 条件; 增量) { 要执行的代码; } 参数: 初始值:主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的 ...

  5. ECCV 2018 | Bi-Real net:超XNOR-net 10%的ImageNet分类精度

    这项工作由香港科技大学,腾讯 AI lab,以及华中科技大学合作完成,目的是提升二值化卷积神经网络(1-bit CNN)的精度.虽然 1-bit CNN 压缩程度高,但是其当前在大数据集上的分类精度与 ...

  6. 洛谷P1415 拆分数列

    题目背景 [为了响应党中央勤节俭.反铺张的精神,题目背景描述故事部分略去^-^] 题目描述 给出一列数字,需要你添加任意多个逗号将其拆成若干个严格递增的数.如果有多组解,则输出使得最后一个数最小的同时 ...

  7. Spring 学习之AOP

    1. 走进面前切面编程 编程范式: 面向过程编程,c语言: 面向对象编程:c++,java,c#; 函数式编程: 事件驱动编程: 面向切面编程: AOP是一种编程范式,不是编程语言:解决特定问题,不能 ...

  8. HTML5 新特性(一)

    1. 新的Doctype 尽管使用<!DOCTYPE html>,即使浏览器不懂这句话也会按照标准模式去渲染 2. Figure元素 用<figure>和<figcapt ...

  9. SignalR (二)

    在上节中,我们已经初步对 SignalR 进行了了解,这一节我们将做一个SignalR Demon,具体的步骤如下: 1. 创建一个 mvc 4 web 应用程序,并选择 Basic 2. 创建一个 ...

  10. tornado-简单的服务器

    安装tornado pip install tornado 安装sqlalchemy 1.大概代码的解释 import tornado.ioloop #开启循环,等待访问 import tornado ...