美文网首页
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

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