数据提取-lxml模块

一、概述

对html或xml形式的文本提取特定的内容,就需要我们掌握lxml模块的使用和xpath语法。

lxml模块可以利用xpath规则语法,来快速的定位html\xml文档中特定元素以及获取节点信息(文本内容、属性值)

xpath(xml path language)是一门在html\xml文档中查找信息的语言,可用来在html\xml文档中对元素和属性进行遍历。

二、谷歌浏览器xpath helper插件的安装和使用

1、xpath helper插件的安装

在Chrome应用商城中下载xpath helper插件

 

 安装完成后使用快捷键Ctrl+shif+x打开即可开始使用

 2、xpath的节点关系

每个html、xml的标签我们都称之为节点,其中最顶层的节点称为根节点。以xml为例,html也是一样的

 

3、xpath语法-基础节点选择语法

  • xpath使用路径表达式来选取xml文档中的节点或者节点集。
  • 这些路径表达式和我们常规的电脑文件系统中看到的表达式较为相似。
  • 使用Chrome插件选择标签的时候,选中时,选中的标签会添加属性class="xh-highlight"

xpath选择语法语法

例:

选取所有h2标签下的a标签的文本://h2/a/text()

选取所有h2标签下的a标签的href属性://h2/a/@href

选取html下的head标签下的title中的文本信息:/html/head/title/text()

4、节点修饰语法

三、lxml模块的使用

 3.1、导入lxml的etree库

3.2、利用etree.HTML,将html字符串(bytes类型或str类型)转化为Element对象,Element对象具有xpath的方法,返回结果的列表

3.3、xpath方法返还列表的三种情况

  • 返回空列表:根据xpath语法规则字符串,没有定位到任何元素
  • 返回由字符串构成的列表:xpath字符串规则匹配的一定是文本内容或某属性的值
  • 返回由element对象构成的列表:xpath规则字符串匹配的是标签,列表中的element对象可以继续进行xpath

数据提取示例:

from lxml import etree
if __name__ == '__main__':
    text = '''
    <div>
     <ul>
      <li class="item-1">
       <a href="link1.html">first item</a>
      </li>
      <li class="item-1">
       <a href="link2.html">second item</a>
      </li>
      <li class="item-inactive">
       <a href="link3.html">third item</a>
      </li>
      <li class="item-1">
       <a href="link4.html">fourth item</a>
      </li>
     </ul>
    </div>
    '''
    html = etree.HTML(text)
    href_list = html.xpath('//li/a/@href')
    print(href_list)
    title_list = html.xpath('//li/a/text()')
    print(title_list)
    item = {}
    for href in href_list:
        item[href] = title_list[href_list.index(href)]
    print(item)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值