Xpath基础

1.什么是xpath

XPath是一门在XML文档中查找信息的语言

2.xpath中的节点关系

例子:

        HarryPotter

        JK.Rowling

        2022

        1

1.父(Parent)

每个元素以及属性都有一个父。

在例子中,book元素是title、author、year以及price元素的父:

2.子(Children)

元素节点可有零个、一个或多个子。

在例子中,title、author、year以及price元素都是book元素的子:

3.同胞(Sibling)

拥有相同的父的节点

在例子中,title、author、year以及price元素都是同胞:

4.先辈(Ancestor)

某节点的父、父的父,等等。

在例子中,title元素的先辈是book元素和bookstore元素:

5.后代(Descendant)

某个节点的子,子的子,等等。

在例子中,bookstore的后代是book、title、author、year以及price元素:

3.节点的选取

Xpath基础_第1张图片

Xpath基础_第2张图片

Xpath基础_第3张图片

Xpath基础_第4张图片

 

4.Xpath语法

from lxml import etree
wb_data='''
        
''' #解析字符串为html对象,自动补全html,body html=etree.HTML(wb_data) #解析数据,a标签的文本 #写法一:text属性 data1=html.xpath('/html/body/div/li/a') for i in data1: print(i.text) #写法二:text()函数 data2=html.xpath('//a/text()') print(data2) #解析文件:html文件,但是自定义解析器,因为etree默认是xml解析器 #自定义解析器 parser=etree.HTMLParser('utf-8') #解析html的文件为html的对象 html2=etree.parse('123.html',parser=parser) #将对象html2变为字符串,解码,打印输出 # html_data=etree.tostring(html2,pretty_print=True) # res=html_data.decode('utf-8') # print(res) #任意匹配 # data3=html.xpath('//*') # for i in data3: # if hasattr(i,'text'): # print(i.text) #打印电影名字 data4=html2.xpath('//div[@title]') for i in data4: #. 当前节点div,寻找title属性 title=i.xpath('./@title)') #寻找当前节点文本 desc=i.xpath('./') print(title,'\t\t\t\t',desc)

你可能感兴趣的:(python)