xpath解析
环境安装:
pip install lxml
解析原理
1.实例化一个etree的对象
2.调用etree对象的xpath方法结合着不同的xpath表达式实现标签的定位和数据提取
实例化etree对象
etree.parse(‘filename’):将本地html文档加载到该对象
etree.HTML(page_text):网站获取的页面数据加载到该对象
标签定位
-最左侧的/:如果xpath表达式最左侧是以/开头则表达该xpath表达式一定要从根标签开始定位
指定标签
-非最左侧的/:表示一个层级
-非左层的//:表示多个层级
最左侧的//:xpath表达式可以从任意位置进行标签定位
属性定位:tagName(@attrName=‘value’)
索引定位:tag[index]:索引从1开始的
模糊匹配:
-//div[contains(@class,“ng”)]
-//div[starts-with(@class,“ta”)]
取文本
-text():直系文本内容
-//text():所有的文本内容
取属性
-/@attrName
局部数据解析:
我们要将定位到的页面中的标签作为待解析的数据
-在局部数据解析的时候,xpath表达式中要使用./的操作,。/表示的就是当前的局部数据(xpath的调用者)
需求:要求解析出携带html标签的局部数据?
bs4,bs4在实现标签定位的时候返回的直接就是定位到标签对应的字符串数据
xpath表达式如何更加具有通用性
-在xpath表达式中使用管道符分割的作用,可以表示管道符左右两侧的子xpath表达式同时生效或者一个生效