lxml模块:python用来解析xml和html模块,用这个模块就可以使用xpath语法。
**xpath(语法) 就相当于一个路径一样,可以匹配html和xml想要的内容数据**
1、什么xpath?
xpath就是用来筛选html或者xml中元素语法。如果匹配标签和元素,则返回element对象,如果匹配到的是标签和text,则返回字符串
2、xml和html中一些名词。
元素
标签
属性
内容
3、xpath的语法
(1)选取节点
| . | 代表当前节点 |
| … | 代表父节点 |
| / | 从根节点开始 |
| // | 文档的任意位置 |
| nodename | 选取标签火元素 |
| @属性名 | 选取属性名所对应的方法 |
| text() | 选取内容 |
(2)谓语:语言中就是用来限定主语的成分。
a、可以通过位置限定
[数字]选取第几个----> //body/div[3] ----> 选取页面内所有的body标签下的第三个div标签
[last()]:选取最后一个----> //body/div[last()] ----> 选取所有body标签下的最后一个div标签
[last()-1]:选取倒数第二个//body/div[last()-1] ----> 选取所有body标签下的倒数第二个div标签
[position()>1]:选取位置大于1----> //dl/dd[position()>1] ----> 所有dl下的位置大于1的dd标签
b、通过属性限定
[@class=‘属性值’]:选取class属性等于属性值的。----//div[@class=“container”] ----> 选取所有class=“container” 的div标签
[contains(@href,‘baidu’)]:选取属性名为href的属性值包含baidu的标签–//a[contains(@href,“1203”)]
c、通过子标签的内容来限定
//book[price>35]–选取book标签的price字标签的内容大于35的book标签。
(3)通配符:*
@*—任意属性
* —任意节点
什么是xml?
1、定义:可扩展标记性语言(EXtensible Markup Language)
2、特性:xml是具有自描述特性的半结构化数据。
3、作用:xml主要用来传输数据
xml和html的区别?
1、语法要求不同:xml的语法要求更严格。
(1)在html中不区分大小写,在xml中严格区分
(2)在html中,有时不严格,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略
(3)在xml中,拥有单个标记二没有匹配的结束标记的元素,必须用一个/字符作为结尾。
(4)在xml中,属性值必须封装在引号中。在html中,引号可用可不用。
(5)在html中属性名可以不带属性值,xml必须带
(6)xml文档中,空白部分不会被解析器自动删除,但是html是过滤掉空格的
2、标记不同
(1)html使用固有的标记,xml没有固有标记
(2)html标签是预定义的,xml标签是自定义的、可扩展的。
3、作用不同
(1)html的设计宗旨是用来显示数据。
(2)xml使用来传输数据的。