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

 更新时间:2021年04月06日 17:19:56   作者:Python集中营  
这篇文章主要介绍了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]')

获取元素的属性与文本

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

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

相关文章

  • Python通过TensorFLow进行线性模型训练原理与实现方法详解

    Python通过TensorFLow进行线性模型训练原理与实现方法详解

    这篇文章主要介绍了Python通过TensorFLow进行线性模型训练原理与实现方法,结合实例形式详细分析了Python通过TensorFLow进行线性模型训练相关概念、算法设计与训练操作技巧,需要的朋友可以参考下
    2020-01-01
  • Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头

    Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头

    这篇文章主要介绍了Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头的示例,帮助大家更好的利用python处理图片,感兴趣的朋友可以了解下
    2020-10-10
  • 解决Pycharm中恢复被exclude的项目问题(pycharm source root)

    解决Pycharm中恢复被exclude的项目问题(pycharm source root)

    今天小编就为大家分享一篇解决Pycharm中恢复被exclude的项目问题(pycharm source root),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Pytorch复现扩散模型的示例详解

    Pytorch复现扩散模型的示例详解

    这篇文章主要为大家详细介绍了如何利用Pytorch复现扩散模型,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的可以跟随小编一起了解一下
    2023-04-04
  • Python Opencv使用ann神经网络识别手写数字功能

    Python Opencv使用ann神经网络识别手写数字功能

    这篇文章主要介绍了opencv(python)使用ann神经网络识别手写数字,由于这里主要研究knn算法,为了图简单,直接使用Keras的mnist手写数字解析模块,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Python升级导致yum、pip报错的解决方法

    Python升级导致yum、pip报错的解决方法

    这篇文章主要给大家介绍了因为Python升级导致yum、pip报错的解决方法,文中通过示例代码将解决的方法介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习下吧。
    2017-09-09
  • Python pygame项目实战监听退出事件

    Python pygame项目实战监听退出事件

    这篇文章主要介绍了Python pygame项目实战监听退出事件,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • python操作小程序云数据库实现简单的增删改查功能

    python操作小程序云数据库实现简单的增删改查功能

    这篇文章主要介绍了python操作小程序云数据库实现简单的增删改查功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • Django之 ArrayAgg与Admin技巧学习

    Django之 ArrayAgg与Admin技巧学习

    这篇文章主要为大家介绍了Django之ArrayAgg与Admin的技巧学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Python操作Excel的10个必学脚本分享

    Python操作Excel的10个必学脚本分享

    Excel表格操作是我们日常工作中不可或缺的一部分,而Python凭借其强大的数据处理能力,可以极大地提升我们操作Excel的效率,本文将介绍10个必学的Python脚本,需要的可以零基础
    2025-03-03

最新评论