XML及Xpath简介(一)

mac2024-03-09  25

1.什么是xml     (1)定义:xml称为可扩展标记性语言。     (2)特点:xml具有自描述特性。是一种半结构化数据。     (3)作用:xml的设计宗旨是用来传输数据。 2.xml和html的区别。 (1)语法要求不同:xml的语法要求更严格。     1、在html中不区分大小写,在xml中严格区分     2、在html中,有时不严格,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略</p>或者</li>标记。在xml中,是严格的树状结构,绝对不能省略任何标记。     3、在xml中,拥有单个标记而没有匹配的结束标记的元素必须用一个/字符作为结尾。<a href=’www’/>     4、在xml中,属性值必须封装在引号中。在html中,引号可用可不用。     5、在html中属性名可以不带属性值,xml必须带。     6、xml文档中,空白部分不会被解析器自动删除,但是html是过滤掉空格。 (2)作用不同:xml主要用来传输数据。html主要用来显示数据,以及更好的显示数据。 (3)标记不同:xml没有固定的标记。html标签是固定的。 3.xpath     (1)什么是xpath?         xpath是一种语法,用来提取xml或者html页面内容的语法。     (2)xpath语法内容         元素:指一个xml的标签以及标签的所有内容         属性:class,name         内容:a标签的内容就是aaa,b标签的内容就是bbb         标签:和元素一样。             <a>                 aaa                 <b>bbb</b>             </a>         1.选取节点             nodename ----选取此标签的所有子标签。             /   ----从根节点开始选取             // -----从任意位置开始选取。             .  ---选取当前节点             ..  ---选取父节点             @  ---选取属性             text() ---选取内容         2.谓语             英语中谓语用来限定。             xpath的谓语也是限定选取的内容的。             /bookstore/book[1]---表示取bookstroe下面的第一个book标签。             /bookstore/book[last()]---表示取bookstroe下面的最后一个book标签             /bookstore/book[last()-1]---表示取bookstroe下面倒数第二个book标签             /bookstore/book[position()>1]---表示从bookstroe下面的第二本书开始取             //title[@lang] ---取一个有lang属性的title标签。             //title[@lang="eng"] ---取一个有lang属性,并且lang属性为eng的title标签。                  3.选取未知节点             * ---匹配任意节点             @* --匹配任意属性         4.选取若干路径             //title|//price -- 选取所有的title标签和price标签。              4.在python中如何使用xpath?     通过lxml模块,可以使用xpath语法来筛选元素。          #导包     from lxml import etree          (1)将字符串形式的xml内容解析成可以调用xpath语法的element对象的方法。         html_element = etree.HTML(html_str)              html_element.xpath()--->返回值也是一个element,表示还可以继续调用xpath方法来继续筛选元素。     etree.HTML()可以帮我们补齐标签内容。     (2)将一个html文件转化成element对象的方法。             from lxml import etree         html = etree.parse('demo.html')         # print(html)         print(etree.tostring(html,pretty_print=True,encoding='utf-8').decode('utf-8'))         当使用parse方法解析一个xml或者html文件时,语法必须严格按照xml的标签语法。标签必须对应。                                                                                                                              

最新回复(0)