Xpath常用规则

 

Xpath常用运算符

 

from lxml import etree
text = \'\'\'一段HTML\'\'\'
html = etree.HTML(text) #初始化构造Xpath解析对象


html1 = etree.parse(html,etree.HTMLParser())#解析HTMl代码


result = etree.tostring(html) #修正HTML代码并输出
result1 = html1.xpath(\'//*\') #选取所有节点
result2 = html1.xapth(\'//li\') #获取所有的li节点,结果为列表形式
result3 = html1.xpath(\'//li/a\')#获取所有li节点下的所有直接a节点
result4 = html1.xpath(\'//ul//a\')#获取ul节点下的所有a节点

result5 = html1.xapth(\'//a[@href="link4.html"]/../@class\') #获取hreflink4.htmla节点,然后在获取父节点,然后再获取其class属性
#result5等价于result5 = html.xpath(\'//a[@href="link4.html"]/parent..*/@class\')
result6 = html1.xpath(\'//li[@class="item-0"]\') #选择属性为item-0li标签
result7 = html1.xpath(\'//li[@class="item-0"]//text()\') #选择属性为item-0li标签中的文本,也可以使用\'//li[@class="item-0"]/a/text()\'
result8 = html1.xpath(\'//li/a/@href\') #获取所有li节点下的所有a节点的所有href属性,与获取某个属性result5做出区别
result9 = html1.xpath(\'//li[contains(@class="li")]/a/text()\') #匹配class属性中包含li;属性中具有多个值,对其中一个值进行属性匹配
result10 = html1.xpath(\'//li[contains(@class,"li") and @name="item"]/a/text\') #匹配class属性中包含liname属性为itemli节点

result11 = html1.xpath(\'//li[1]/a/text()\') #选取第一个li节点下的a节点中的文本
result12 = html1.xpath(\'//li[last()]/a/text()\') #选取最后一个li节点下的a节点中的文本
result13 = html1.xpath(\'//li[position()<3]/a/text()\') #选取位置小于3li节点下的a节点中的文本
result14 = html1.xpath(\'//li[last()-2]/a/text()\') #选取倒数第三个li节点下的a节点中的文本

result15 = html1.xpath(\'//li[1]/ancestor::*\') #匹配第一个li节点的所有祖先节点
result16 = html1.xpath(\'//li[1]/ancestor::div\') #匹配第一个li节点的所有div祖先节点
result17 = html1.xpath(\'//li[1]/attribute::*\') #匹配第一个li节点的所有属性值
result18 = html1.xpath(\'//li[1]/child::a[@href="link1.html"]\') #匹配第一个li节点下的所有href="link1.htmla子节点
result19 = html1.xpath(\'//li[1]/descendant::span\') #匹配第一个li节点所有的span子孙节点
result20 = html1.xpath(\'//li[1]/following::*[2]\') #匹配第一个li节点之后的第二个后续节点,*为所有后续节点
result21 = html1.xpath(\'//li[1]/following-sibling::*\') #匹配第一个li节点之后的所有后续同级节点


print(result.decode(\'utf-8\')) #bytes类型转成str类型
print(result1) #打印HTML中出现的所有代码
print(result2[0])
# print(result3)
# print(result4)
# print(result5)
# print(result6)
# print(result7)
# print(result8)
# print(result9)

相关文章:

  • 2021-09-22
  • 2021-09-09
  • 2021-01-25
  • 2021-01-26
  • 2021-01-30
  • 2021-03-02
  • 2021-12-05
  • 2021-05-12
猜你喜欢
  • 2021-09-20
  • 2021-09-20
  • 2021-12-28
  • 2021-09-20
  • 2021-09-20
  • 2021-09-20
相关资源
相似解决方案