美文网首页
Spider基础之XML和JSON

Spider基础之XML和JSON

作者: 嗒嘀嗒嗒嘀嗒嘀嘀 | 来源:发表于2020-02-26 23:07 被阅读0次

学习自刘大拿的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书写中的转义问题,这些需要转义的字符被称为“保留字符”,一般有两种解决方案

①实体引用,即用一种乱码表示,有五个(注意,末尾有分号)

- &:&amp;

- <:&lt;

- >:&gt;

- ' :&apos;

- " :&quot;

②把含有保留字符的内容放在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

在线工具

https://www.sojson.com/

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/

相关文章

  • Spider基础之XML和JSON

    学习自刘大拿的Python课程 xml. 1)xml.是一种统一的储存文件的格式,相当于“集装箱”,方便运输。为了...

  • Senior进阶 网络之数据解析之XML解析和JSON解析的用法

    Senior进阶 网络之数据解析之XML解析和JSON解析的用法 XML解析之SAX解析 XML解析之DOM解析 ...

  • JSON与XML解析

    JSON与XML解析 json 待整理 xml 基础常识 原样输出内容: 约...

  • 数据格式

    XML和JSON数据格式 json数据格式 {"":"", "":"", "":""} json xml对比 1....

  • 菜鸟笔记(五) - 常见传输格式解析

    本文将介绍使用Java解析json和生成json,解析xml以及生成xml的一些方法。 前提摘要:JSON和XML...

  • XML JSON

    XML和JSON的优缺点对比 (1).可读性方面。 JSON和XML的数据可读性基本相同,JSON和XML的可读性...

  • JSON和XML之间有哪些不同

    JSON和XML之间的区别是什么?下面本篇文章就来给大家比较一下JSON和XML,介绍JSON和XML之间的区别,...

  • iOS面试无果,是因为这些题

    每日瑜伽面试题(电话面试) 1. json 和 xml 哪个好,为什么? XML和JSON优缺点 (1).XML...

  • JSON 和 XML

    XML扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有...

  • XML和JSON

    XML XML:可扩展标记语言。由标准通用标记语言(SGML)中简化修改出的。用于传送及携带数据信息,与说明数据是...

网友评论

      本文标题:Spider基础之XML和JSON

      本文链接:https://www.haomeiwen.com/subject/oxngchtx.html