python第三方网页解析器 lxml 扩展库与 xpath 的使用方法


Posted in Python onApril 06, 2021

今天说的则是使用另外一种扩展库 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]')

获取元素的属性与文本

'''
使用@获取属性值,使用text() 获取标签文本
'''
# 获取属性值
print html.xpath('//a[position() = 1]/@class')
# ['sister']
# 获取标签的文本值
print html.xpath('//a[position() = 1]/text()')

到此这篇关于python 网页解析器掌握第三方 lxml 扩展库与 xpath 的使用方法的文章就介绍到这了,更多相关python lxml 扩展库与 xpath内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python编程中的for循环语句学习教程
Oct 14 Python
python发送邮件功能实现代码
Jul 15 Python
Python应用03 使用PyQT制作视频播放器实例
Dec 07 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
Apr 11 Python
Python爬虫获取整个站点中的所有外部链接代码示例
Dec 26 Python
python批量修改图片后缀的方法(png到jpg)
Oct 25 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
Jun 12 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
Nov 01 Python
Python图像处理库PIL中图像格式转换的实现
Feb 26 Python
pycharm如何实现跨目录调用文件
Feb 28 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
Apr 27 Python
python利用proxybroker构建爬虫免费IP代理池的实现
Feb 21 Python
python删除csv文件的行列
Apr 06 #Python
python使用pygame创建精灵Sprite
python 逐步回归算法
python 通过使用Yolact训练数据集
python生成随机数、随机字符、随机字符串
Apr 06 #Python
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
Apr 06 #Python
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
You might like
php mssql 日期出现中文字符的解决方法
2009/03/10 PHP
PHPLog php 程序调试追踪工具
2009/09/09 PHP
让PHP支持断点续传的源码
2010/05/16 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
详细解读PHP中接口的应用
2015/08/12 PHP
php获取图片信息的方法详解
2015/12/10 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
javascript 获取图片尺寸及放大图片
2013/09/04 Javascript
input链接页面、打开新网页等等的具体实现
2013/12/30 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
[08:53]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS 选手采访
2021/03/11 DOTA
解决Python requests 报错方法集锦
2017/03/19 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
如何安装多版本python python2和python3共存以及pip共存
2018/09/18 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
python数据分析:关键字提取方式
2020/02/24 Python
python实现图像拼接功能
2020/03/23 Python
浅谈python 类方法/静态方法
2020/09/18 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
浅析移动设备HTML5页面布局
2015/12/01 HTML / CSS
英国评分最高的女性剃须刀订阅盒:FFS Beauty
2018/01/25 全球购物
电脑教师的自我评价
2013/12/18 职场文书
实验教师岗位职责
2014/02/13 职场文书
党校学习党性分析材料
2014/12/19 职场文书
孔庙导游词
2015/02/04 职场文书
社区活动总结范文
2015/05/07 职场文书
学校运动会开幕词
2016/03/03 职场文书