xpath解析

发布时间 2023-05-26 18:05:41作者: 小青年て

  1.环境安装

pip install lxml

2.解析原理

2.1实例化一个etree的对象,且将待解析的页面源码数据加载到该对象中

2.2调用etree对象的xpath方法结合着不同的xpath表达式实现标签的定位和数据提取

3.实例化etree对象

etree.parse('filename'):将本地html文档加载到该对象中

etree.HTML(page_text):网站获取的页面数据加载到该对象

4.标签定位

from lxml import etree

tree = etree.parse('test.html')

最左侧的/:如果xpath表达式最左侧是以/开头啧表示该xpath表达式一定要从跟标签开始定位标签

非最左侧的/:表示一个层级

非最左侧的//:表示多个层级

最左侧的//:xpath表达式可以从任意位置进行标签定位

#都定位meta
tree.xpath('html/head/meta')
tree.xpath('html//meta')
tree.xpath('//meta')

属性定位:tagName[@attrName='value']

#定位class位为song的div下面所有的p标签
tree.xpath('//div[@class='song']/p')

索引定位:tag.[index]:索引是从1开始的

#定位class位为song的div下面第一个的p标签
tree.xpath('//div[@class='song']/p[1]')

模糊匹配

//div.[contains(@class,"ng")]  # 匹配class包含ng

5.取文本

/text:直系文本内容

//text:所有文本内容

#定位class位为song的div下面第一个的p标签下所有文本内容
tree.xpath('//div[@class='song']/p[1]//text()')

6.取属性

/attrName

tree.xpath('//a[@id="geng"/href]')  # 取a标签下id等于geng的href