解析原理: html标签是以树状形式展示
- 实例化一个etree对象
- 调用etree对象的xpath方法,结合不同xpath表达式进行标签定位和数据提取
示例化etree对象
- etree.parse('fileName'):加载本地html
- etree.HTML(page_text):加载网站获取的页面数据
标签定位
from lxml import etree
tree = etree.parse('test.html')
tree.xpath('/html/head/meta')
最左侧的/ :
代表表达式从根标签开始定位
tree.xpath('/html//meta') # 找到html下所有meta
非最左侧的//:
表示多个层级
tree.xpath('//meta') # 找到所有meta
最左侧的//:
表示可以从任意位置开始标签定位
属性定位
tagName[@attrName = 'value']
tree.xpath('//div[@class="video"]/p') # 找到class为video下所有的p
索引定位
tag[index] #索引是从1开始的
tree.xpath('//div[@class="video"]/p'[2]) # 找到class为video下所有的p
模糊匹配
//div[contains(@class,'de')] #class带de的
//div[starts-with(@class,'vi')] # calss以vi开头
取文本
/text():直系文本内容
//text():所有文本内容
tree.xpath('//div[@class="video"]/p[1]/text()') # 找到class为video下所有的第1p的文字
取属性
/@attrName
tree.xpath('a[@id="v1"]/@href'
说明:如果有精彩文章或者技巧,欢迎投稿