xpath的基本使用

                       

from lxml import etree

text ="""

这里是通过requests库的get方法或post方法获取的信息

"""

html = etree.HTML(text) #传入验证参数text,实例化出来一个html的对象

result = etree.tostring(html)#把HTML类实例化的对象传入进去,调用tostring()方法输出修正后的HTML

代码,但是结果是bytes类型。

print(result.decode('utf-8'))#或 str(result,encoding=‘utf-8’)

直接读取文本文件进行解析

from lxml import etree

html = etree.parse('./test.html',etree.HTMLParser()) #test.html是html文件,etree.HTMLParser(),解析器

result = etree.tostring(html)

print(result.decode('utf-8'))

具体使用;

from lxml import etree

html = etree.parse('./test.html',etree.HTMLParser())

result = html.xpath('//li') 选取所有的li节点,是一个列表的形式

print(result)

print(result[0]) #获取一个对象

其中/用于获取直接子节点,//用于获取子孙节点。

文本获取

用xpath中的text()方法获取节点中的文本。

from lxml import etree

html = etree.parse('./test.html',etree.HTMLParser())

result = html.xpath('//li[@class="item-0"]/text()')#这里解释这句匹配是什么意思,选取当前文档所有属性

class的值等于item-0的li标签里面的文本内容

print(result)

'//li[@class="item-0"]/a/text()' a的文本内容

其实@符号也能获取

from lxml import etree

html = etree.parse('./test.html',etree.HTMLParser())

result = html.xpath('//li/a/@href')

print(result)

通过@href即可获取节点的href属性。注意:此处和属性匹配的方法不同,属性匹配是

中括号加属性后和值来限定某个属性,如【@href=‘kink1.html’】,而@href获取节点的某个属性

猜你喜欢

转载自www.cnblogs.com/wuheng-123/p/9386422.html