学习自刘大拿的Python课程
xml.
1)xml.是一种统一的储存文件的格式,相当于“集装箱”,方便运输。为了将各式各样的“货物(信息)”按照全网通用的格式打包好,便于分发给不同网站、软件、系统等识别使用。
2)xml.是由可以被人读懂的语言储存、传输;json.是由可以被机器读懂的方式储存,比前者更高效。
3)是一种标记语言(用尖括号括起来的文本字符串标记),像html就是一种标记语言,xml是它的特例。
4)是一种可扩展语言,用户可自己定义标记,html则不行。
5)HTML集中于显示web上数据,XML集中于描述数据本身的结构及语意。
XML文档内容构成
1)处理指令(可以认为一个文件内只有一个处理指令)
①最多只有一行且必须在第一行;
②内容是与xml本身处理起相关的一些声明或者指令,一般用于声明XML的版本和采用的编码;
③处理指令书写格式:
- 以xml关键字开头,且只出现一次;
- version属性必须有,用于声明XML的版本;
- encoding属性用来指出xml解释器使用的编码,比如“utf-8”格式;
2)文档结构
①整个xml文件是一个树形结构,只能有一个根标签,类似于Linux系统根目录的理解。
②整个框架中有多级标签(大拿讲的是根元素、子元素,但由于是标记型语言,个人觉得说标签更容易理解,即根标签、子标签)
- 标签命名规则(Pascal命名法):用单词表示,第一个字母大写,大小写严格区分,配对的标签要一致;
- 标签内部可以规定标签的属性,便于识别;
- 前后标签的格式一般为 <前标签名 属性n=“选项n”> 内容 </后标签名>
3)注释
①格式 <!-- 注释内容 -->
②注意:
- 注释不能嵌套在标签里
- 只有在注释的开始和结尾能使用双短横线
-三短横线只能出现在注释的开头而不能用在结尾
4)xml书写中的转义问题,这些需要转义的字符被称为“保留字符”,一般有两种解决方案
①实体引用,即用一种乱码表示,有五个(注意,末尾有分号)
- &:&;
- <:<;
- >:>;
- ' :&apos;
- " :";
②把含有保留字符的内容放在CDATA块内,格式为 <![CDTAT[ 需要保留原意的内容 ]]>
笔记链接 http://39.96.89.79/2019/06/07/xml/
5)命名空间,xml文件合并时会出现子标签命名冲突的问题,用命名空间解决。
- xmlns: (xml name space 的缩写)
- 格式:<标签名 xmlns:目标XML文件1的标签名=“目标XML文件1的链接” 目标XML文件2的标签名=“目标XML文件1的链接” >
xml的读写
读取在Spider中常用,写入在运维中常用
1)读取两个主技术,SAX、DOM,SAM不常用。
- DOM解析方式:整体识别→识别xml树形结构→标签级别与关系分析
- DOM功能:定位浏览XML任何一个信息;添加删除相应内容
- 两个包工具 minidom和etree
2)minidom工具
- minidom.parse(filename):加载读取的xml文件, filename也可以是xml代码
- doc.documentElement:获取xml文档对象,一个xml文件只有一个对于的文档对象,即得到的树根或一个节点
- node.getAttribute(attr_name):获取xml节点的属性值
- node.getElementByTagName(tage_name):得到一个节点对象集合
- node.childNodes:得到所有孩子节点,合成的是一个列表,包括单个子节点的情况
- node.childNodes[index].nodeValue:获取单个节点值,即内容
- node.firstNode:得到第一个节点,等价于node.childNodes[0]
- node.attributes[tage_name] 得到所有的属性
3)etree工具(用的较多)
- 以树形结构来表示xml
- root.getiterator:得到相应的可迭代的node集合,即根或一个节点
- root.iter 迭代器,为了用for循环遍历
- find(node_name):查找指定node_name的节点,返回一个node
- root.findall(node_name):返回多个node_name的节点
- node.tag: node对应的tagename
- node.text:node的文本值
- node.attrib: 是node的属性的字典类型的内容
4)xml写入
- 更改
ele.set:修改属性
ele.append: 添加子元素
ele.remove:删除元素
- 生成创建
SubElement()
SubElement创建minidom 写入
minidom写入实例 接上面etree创建
etree创建json
在线工具
http://www.w3school.com.cn/json/
http://www.runoob.com/json/json-tutorial.html
JSON(JavaScriptObjectNotation)
轻量级的数据交换格式,基于ECMAScript
json格式是一个键值对形式的数据集
key: 字符串
value:字符串,数字,列表,json
json使用大括号包裹
键值对直接用都好隔开
json 和 python 格式的对应
字符串:字符串
数字:数字
队列:list
对象:dict
布尔值:布尔值
python for json
json包
json和python对象的转换
json.dumps():对数据编码,把python格式表示成json格式
json.loads(): 对数据解码,把json格式转换成python格式
python读取json文件
json.dump(): 把内容写入文件
json.load(): 把json文件内容读入python
xml笔记链接 http://39.96.89.79/2019/06/07/xml/
json笔记链接 http://39.96.89.79/2019/04/23/036-%e6%a0%bc%e5%bc%8f%e5%8c%96%e6%96%87%e4%bb%b6-json/
网友评论