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')
                    
                
                
            
        
浙公网安备 33010602011771号