前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python解析xml文件

python解析xml文件

作者头像
efonfighting
发布2019-09-29 15:29:07
1.6K0
发布2019-09-29 15:29:07
举报
文章被收录于专栏:一番码客一番码客

本文目录:

前言关于XML解析结语

前言

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

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

关于XML

  • XML是一种可扩展标记语言(eXtensible Markup Language),主要被用来存储数据。
  • XML是一种树状结构,每个节点被称作一个元素,元素有对应的属性(描述)。
代码语言:javascript
复制
<?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文件。
代码语言:javascript
复制
trace_list = sorted(glob.glob("out/*.chlsx"), key=os.path.getmtime, reverse=True)
  • 这里xml的解析我们用到一个库xml.dom.minidom,首先用parse读取这个xml文件;
  • getElementsByTagName读取元素的内容;
  • firstChild.data读取一个元素的属性(描述);
代码语言:javascript
复制
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解析源码。

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一番码客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 解析
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档