#-*- coding:utf-8 -*-
from lxml importetree
html= """
我的文档"""selector=etree.HTML(html)############ example 1 #############这里使用id属性来定位哪个div和ul被匹配 使用text()获取文本内容#这里注意要层层匹配#content = selector.xpath('//div[@id="cctv"]/div[@class="content"]/ul[@id="ul"]/li/text()')#content = selector.xpath('//div[@id="cctv"]/div[@class="content"]/ul[@id="ul2"]/li/span[@class="ctv"]/text()')
content = selector.xpath('//a/@href')for i incontent:print(i)print(u"************ 华丽分割符1 ************")############ example 2 #############使用绝对路径定位a标签的title
con = selector.xpath('/html/body/div/a/@title')#使用相对路径定位 两者效果是一样的
con = selector.xpath('//a/@title')print(len(con))print(con[0], con[1])print(u"************ 华丽分割符2 ************")############ example 3 #############starts-with 解决标签属性值以相同字符串开头的情况
con2 = selector.xpath('//span[starts-with(@class,"c")]/text()') #这里使用starts-with方法提取div的id标签属性值开头为a的div标签
for i incon2:print(i)print(u"************ 华丽分割符3 ************")#string(.) 标签套标签
html2 = '''
left
right
up
downeast
west
#下面是没有用string方法的输出
selector2 =etree.HTML(html2)
con3= selector2.xpath('//div[@id="a"]/text()')for i incon3:print(i)print(u"************ 华丽分割符4 ************")#下面使用string方法的输出
data = selector2.xpath('//div[@id="a"]')#info = data[0].xpath('string(.)').extract()[0]
info = data[0].xpath('string(.)')
con4= info.replace('\n', '').replace(' ', '')for i incon4:#python 输出结果默认是\n,换行,将结尾替换掉即可实现不换行。
print(i, end='')print("\r")print(u"************ 华丽分割符5 ************")############ example 4 ############
html3 = """
H
con5 = selector3.xpath('//div[text()="hehe"]/text()')print(con5[0])print(u"************ 华丽分割符6 ************")############ example 5 ############
html4 = """
H
J
I
con6 = selector4.xpath('//div/p[position()>=2]/text()')for i incon6:print(i)print(u"************ 华丽分割符7 ************")