04xpath

数据提取

lxml和xpath

lxml是Python的第三方解析库,完全使用Python语言编写,它对Xpath表达式提供了良好的支持,能够了高效地解析HTML/XML文档。

XPath即为XML路径语言,它是一种用来确定XML文档中某部分位置的语言,同样适用于HTML文档的检索。

安装:pip install lxml

使用流程

1.导入模块:from lxml import etree
2.创建解析对象:
    - 将本地的html源码数据加载到etree对象中:
        parse_html = etree.parse(filepath)
    - 从互联网上获取的数据源码加载到etree对象中:
        parse_html = etree.HTML(conetent_text)
3.xpath表达式书写   xpath返回一个列表
	r_list = parse_html.xpath('xpath语法')

xpath语法

表达式 描述
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
/ 某节点下的某个节点
@ 选取某个节点的属性
text() 选取文本
. 当前节点
... 父节点

谓语:谓语用来查找某个特定的节点或者包含某个指定的值的节点,被嵌在方括号中

表达式 描述
/bookstore/book[1] 选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/book[last()] 选取属于 bookstore 子元素的最后一个 book 元素。
//title[@lang] 选取所有拥有名为 lang 的属性的 title 元素。
/表示从根节点开始定位,也表示一个层级
//表示多个层级,也表示从任意层级开始定位
下面三种方式的作用(结果)相同:
    r = parse_htmlparse_html.xpath('/html/body/div')
    r = parse_html.xpath('/html//div')
    r = parse_html.xpath('//div')
      - 属性定位:
        r = parse_html.xpath('//div[@class='song']')
      - 索引定位:从1开始
        r = parse_html.xpath('//div[@class='song']/p[1]')
    -获取文本:
        /text() 获取标签中直系的文本内容
        //text() 获取标签下的所有文本内容
    -获取属性值:
        /@attrName
        例: r = tree.xpath('/div[@class='song']/img/@src')
posted @ 2023-04-05 00:44  LePenseur  阅读(33)  评论(0)    收藏  举报