lxml模块(数据提取)

lxml 是 Python 的第三方解析库,在第一次使用前需要使用到下面命令进行下载

pip install lxml

lxml使用流程

lxml模块中提供了一个etree 模块,该模块专门用于解析HTML/XML 文档

  • 导入模块
from lxml import etree
  • 初始化解析对象
parse_html = etree.HTML(html)

HTML() 方法能够将 HTML 标签字符串解析为 HTML 文件,该方法可以自动修正 HTML 文本。parse_html只是一个变量名,后续的调用xpath表达式都是在此对象的基础上完成的。

  • 调用xpath表达式
r_list = parse_html.xpath('xpath表达式')

xpath方法会将符合xpath表达式的结果以列表的形式返回。

xpath表达式

常用的路径表达式

  • nodename
    • 选取此节点的所有子节点。
  • /
    • 从根节点选取。
  • //
    • 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
  • .
    • 选取当前节点。
  • ..
    • 选取当前节点的父节点。
  • @
    • 选取属性。

常用方法

  • text()
    • 返回该节点的的数据,如:
    • 哈哈哈
    • 使用text()方法后会返回哈哈哈
  • contains()

    • 获取含有指定属性的节点

    • first item
    •  如果一个属性里面有两个值,采用其中任意一个属性匹配无法获取,必须选择全部值进行匹配才能获取,contains()方法就可以解决这个问题。

    • 该方法接收两个参数,第一个参数传入属性名称,第二个参数传入属性值,如:

    • result1 = html.xpath('//li[contains(@class, "li")]/a/text()')

按序查找

  • 索引
    • 使用中括号指定位置,需要注意的是,在这里的需要是从1开始
result = html.xpath("//li[1]/a/text()")
  • last()

    • 最后一个

result1 = html.xpath("//li[last()]/a/text()")

 该方法也支持与运算符共同使用,如:

result3 = html.xpath("//li[last()-2]/a/text()")

表示获取倒数第3个节点,在最后一个的基础上-2. 

  • position()

    • 获取指定位置,与索引不同的是,该方法一般与运算符共同指定,如:

result2 = html.xpath("//li[position()<3]/a/text()")

则表示获取前两个节点 ,获取位置序号小于3的节点

你可能感兴趣的:(爬虫,python模块,python,开发语言)