python 网页解析器掌握第三方 lxml 扩展库与 xpath 的使用方法
更新时间:2021年4月6日 20:00
这篇文章主要介绍了python 网页解析器掌握第三方 lxml 扩展库与 xpath 的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
今天说的则是使用另外一种扩展库 lxml 来对网页完成解析。同样的,lxml 库能完成对 html、xml 格式的文件解析,并且能够用来解析大型的文档、解析速度也是相对比较快的。
要掌握 lxml 的使用,就需要掌握掌握 xpath 的使用方法,因为 lxml 扩展库就是基于 xpath 的,所以这一章的重点主要还是对 xpath 语法使用的说明。
1、导入 lxml 扩展库、并创建对象
# -*- coding: UTF-8 -*- # 从 lxml 导入 etree from lxml import etree # 首先获取到网页下载器已经下载到的网页源代码 # 这里直接取官方的案例 html_doc = """ <html><head><title>The Dormouse's story</title></head> <body> <p class="title"><b>The Dormouse's story</b></p> <p class="story">Once upon a time there were three little sisters; and their names were <a href="http://example.com/elsie" rel="external nofollow" class="sister" id="link1">Elsie</a>, <a href="http://example.com/lacie" rel="external nofollow" class="sister" id="link2">Lacie</a> and <a href="http://example.com/tillie" rel="external nofollow" class="sister" id="link3">Tillie</a>; and they lived at the bottom of a well.</p> <p class="story">...</p> """ # 初始化网页下载器的 html_doc 字符串,返回一个 lxml 的对象 html = etree.HTML(html_doc)
2、使用 xpath 语法提取网页元素
按照节点的方式获取元素
# xpath() 使用标签节点的方式获取元素 print html.xpath('/html/body/p') # [<Element p at 0x2ebc908>, <Element p at 0x2ebc8c8>, <Element p at 0x2eb9a48>] print html.xpath('/html') # [<Element html at 0x34bc948>] # 在当前节点的子孙节点中查找 a 节点 print html.xpath('//a') # 在当前节点的子节点中查找 html 节点 print html.xpath('/html')
按照筛选的方式获取元素
''' 根据单一属性获取元素 ''' # 获取子孙节点中,属性 class=bro 的 a 标签 print html.xpath('//a[@class="bro"]') # 获取子孙节点中,属性 id=link3 的 a 标签 print html.xpath('//a[@id="link3"]') ''' 根据多个属性获取元素 ''' # 获取class属性等于sister,并且id等于link3的a标签 print html.xpath('//a[contains(@class,"sister") and contains(@id,"link1")]') # 获取class属性等于bro,或者id等于link1的a标签 print html.xpath('//a[contains(@class,"bro") or contains(@id,"link1")]') # 使用 last() 函数,获取子孙代的a标签的最后一个a标签 print html.xpath('//a[last()]') # 使用 1 函数,获取子孙代的a标签的第一个a标签 print html.xpath('//a[1]') # 标签筛选,position()获取子孙代的a标签的前两个a标签 print html.xpath('//a[position() < 3]') ''' 使用计算的方式,获取多个元素 ''' # 标签筛选,position()获取子孙代的a标签的第一个与第三个标签 # 可以使用的计算表达式:>、<、=、>=、<=、+、-、and、or print html.xpath('//a[position() = 1 or position() = 3]')
获取元素的属性与文本
''' [email protected],使用text() 获取标签文本 ''' # 获取属性值 print html.xpath('//a[position() = 1][email protected]') # ['sister'] # 获取标签的文本值 print html.xpath('//a[position() = 1]/text()')
到此这篇关于python 网页解析器掌握第三方 lxml 扩展库与 xpath 的使用方法的文章就介绍到这了,更多相关python lxml 扩展库与 xpath内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
相关文章
- DOM XPATH获取img src值的query
- 如何利用pygame实现简单的五子棋游戏
- python无序链表删除重复项的方法
- python 计算方位角实例(根据两点的坐标计算)
- Python pymysql模块安装并操作过程解析
- Python 实现数组相减示例
- 通过实例了解Python异常处理机制底层实现
- Python sqlalchemy时间戳及密码管理实现代码详解
- Python验证的50个常见正则表达式
- 带你彻底搞懂python操作mysql数据库(cursor游标讲解)
- Python下使用Trackbar实现绘图板
- Python中常用的os操作汇总
- python操作mysql、excel、pdf的示例
- 基于Python获取照片的GPS位置信息
- Python调用.NET库的方法步骤
- Python导入数值型Excel数据并生成矩阵操作
- python中的插入排序的简单用法
- Python3使用Selenium获取session和token方法详解
- python如何获取apk的packagename和activity
- python如何调用java类