python解析xml文件

一番码客 : 挖掘你关心的亮点。
http://efonfighting.imwork.net

本文目录:

前言

本来今天准备学习下electron的,结果npm工具的安装真是费了劲,网速差的不得了。为了完成今天的日更,只能放弃,今天来谢谢python的xml解析吧。

昨天我们讲了Charles的安装与使用,而Charles抓到一条数据之后,我们想要把这条数据导出来用脚本分析,那么,Charles提供了导出(export)功能。导出的格式包括.chls/csv/trace/chlsx/chlsj/har格式。这里的chlsx其实就是一种xml格式,里面包含的内容比较全。
在这里插入图片描述

关于XML

  • XML是一种可扩展标记语言(eXtensible Markup Language),主要被用来存储数据。

  • XML是一种树状结构,每个节点被称作一个元素,元素有对应的属性(描述)。

<?xml version="1.0" encoding="UTF-8"?>
<body>
  <name>efon</name>
  <sex>male</sex>
  <profession>SW Engineer</profession>
</body>

解析

这里我们还是以抓取公众号文章列表页的一页数据为例。用Charles导出一页chlsx数据。

我们要从这个xml文件里获得Host|Referer|Cookie|url这几个动态信息。

  • 我们用sorted函数排序,找出时间最新的一个chlsx文件。
trace_list = sorted(glob.glob("out/*.chlsx"), key=os.path.getmtime, reverse=True)
  • 这里xml的解析我们用到一个库xml.dom.minidom,首先用parse读取这个xml文件;
  • getElementsByTagName读取元素的内容;
  • firstChild.data读取一个元素的属性(描述);
DOMTree = xml.dom.minidom.parse(trace_list[0])
File = DOMTree.documentElement.getElementsByTagName('first-line')[0].firstChild.data
headers = DOMTree.documentElement.getElementsByTagName("header")
for header in headers:
    names = header.getElementsByTagName('name')
    if (names[0].firstChild.data == 'Host'):
        Host = header.getElementsByTagName('value')[0].firstChild.data
    elif(names[0].firstChild.data == 'Referer'):
        Referer = header.getElementsByTagName('value')[0].firstChild.data
    elif (names[0].firstChild.data == 'Cookie'):
        Cookie = header.getElementsByTagName('value')[0].firstChild.data

结语

好了,通过上面的步骤,我们便可以从xml文件里拿到我们想要的元素属性了。

公众号后台回复xml获取文中用到的xml文件和python解析源码。

一番雾语:就像表达是你的情绪的反映一样,表达方式反之也会影响情绪。

免费知识星球: 一番码客-积累交流
微信公众号:一番码客
微信:Efon-fighting
网站: http://efonfighting.imwork.net

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一番码客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值