目标:
1:掌握什么是xpath
2:掌握xpath 匹配数据的几种语法格式
3:使用xpath 的一些注意事项
一:什么是 xpath
答:xpath 是在 xml 文档中匹配数据的一种查询语言(俗称xml路径语言),因为 xml 文档与 html 文档结构非常类似,所以 xpath 也可以用在匹配 html 文档数据中(爬虫提取数据)
二:xpath 匹配数据的几种语法格式
//div:匹配文档中所有的 div 标签,返回匹配的内容对象
//div/p:匹配文档中所有的div标签下的一级 p 标签,返回p 标签下(包括p标签子标签)的所有的文本内容对象(是文本结点对象,不是字符串类型的文本)
//div//p:匹配文档中所有 div 标签下的所有级别 p 标签(包含在div标签内其他标签下p标签),返回 p 标签下(包括p标签内子标签)的所有的文本内容对象(是文本结点对象,不是字符串类型的文本)
//div/p[1]:匹配文档中所有div标签内的第一个 p 标签,返回这个 p 标签下的所有文本内容对象
//div[@class=”name”]:匹配文档中属性包含 class=”name”的所有div标签,返回这个div标签下的所有文本内容对象
//div/p@src:匹配文档内所有div标签下的p标签,获取p标签中src属性的值(是字符串类型不是文本对象类型)
//div[@class=”byd”] | //div[@class=”bm”]:匹配文档内class属性为“byd”或者“bm”的所有div标签,返回下面所有标签的文本内容对象(不是字符串类型)
//li[ contains(@class,”car“)]:匹配class属性中包含“car”内容的所有 li 标签,返回下面所有标签的文本内容对象(不是字符串类型)
//li[@class=”name”]/text():匹配 class 属性值为“name’”的所有 li 标签,并且返回 li 标签中(不包括li子标签)的文本内容(字符串类型)
整体图示

三:使用 xpath 的一些注意事项
最重要一条:xpath语法的开头查找标签必须要加两条//,一条/不能成功匹配
1.xpath语法中只要与条件有关,就要在条件两侧加上 [ ]
2.xpath语法内只要与标签属性有关,就要在属性前面加上@
3.xpath语法中末尾是 /text()或者 /@属性值,那么获取的值就是字符串类型的文本内容,除此之外获取的全部都是文本内容对象(不是字符串)
4.xpath语法是 //div/p/text(),只匹配所有div标签下p标签中的文本内容(字符串),不能匹配p标签下其他子标签的文本内容!!!
5.xpath语法是//div/p,匹配所有div标签下p标签中(包含p标签下的其他子标签)的文本内容对象(不是字符串)
6.html一段文档是
姓名
,其中class与id都是属性,匹配的文本内容是姓名,不是其他的!