from lxml import etree html=""" <div> <ul> <li>1</li> <li title="text1">2</li> <li>1</li> <li title="text2">2</li> <li>1</li> <li title="text3">2</li> <li>1</li> <li title="text3 text4">2</li> </ul> </div> """ html=etree.HTML(html) html1=html.xpath('//li[text()=2]')#获取值为2的html节点 # print(html1) html2=html.xpath('//li[text()=2]')[-2]#获取倒数第二个值为2的html节点 # print(html2) html3=html.xpath('//li[text()=2]/@title')#遍历值为2的html节点的title属性 # print(html3)#打印出一个列表 for i in html3: print(i) #重点:针对多个属性,怎么取包含其中的一个值 html4=html.xpath('//li[contains(@title, "text4")]')#找出title属性包含text3的html节点 # print(html4) html5=html.xpath('//li[1]')#找到第一个li # print(html5) html6=html.xpath('//li[last()]')#找到最后一个li # print(html6) html7=html.xpath('//li[last()-1]')#找到倒数第二个li # print(html7) html8=html.xpath('/html/body/div/ul/li[@title="text3"]/text()')#绝对路径找li的属性title="text2"的文本 # print(html8) # 如果在提取某个页面的某个标签的xpath路径的话,可以如下图: # //*[@id="kw"] # 解释:使用相对路径查找所有的标签,属性id等于kw的标签。