Python Xpath解析 数据提取 使用介绍&常用示例

简介: Python Xpath解析 数据提取 使用介绍&常用示例前言一、from lxml import etree1.pip install lxml2.xpath用法介绍2.1 选取节点2.1 路径表达式结合元素介绍3.代码示例4.Xpath Helper (免费 Chrome 插件)总结

Python Xpath解析 数据提取 使用介绍&常用示例

一、from lxml import etree

1.pip install lxml

2.xpath用法介绍

2.1 选取节点

2.1 路径表达式结合元素介绍

3.代码示例

4.Xpath Helper (免费 Chrome 插件)

总结

前言

XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历,XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上。


提示:以下是本篇文章正文内容,下面案例可供参考

一、from lxml import etree

1.pip install lxml

pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple

2.xpath用法介绍

2.1 选取节点

XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。
下面列出了常用的路径表达式:

表达式 描述
nodename 选取此节点的所有子节点。
/ 从根节点选取。
// 不考虑起始位置,在整个文档中全局匹配符合表达式的节点。
. 选取当前节点。
.. 选取当前节点的父节点。
@ 选取属性。

2.1 路径表达式结合元素介绍

路径表达式以及表达式的含义

表达式 描述
bookstore 选取 bookstore 元素的所有子节点。
bookstore/book 选取 bookstore下面(子元素中)的所有 book 元素
//book 选取所有的book元素,在整个文档中全局匹配符合表达式的节点。
bookstore//book 选取bookstore下面(子元素中)所有的book元素
//@lang 选取名为 lang 的所有属性。
/bookstore/book[1] 选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/book[last()] 选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/book[last()-1] 选取属于 bookstore 子元素的倒数第二个 book 元素。
/bookstore/book[position()<5] 选取属于 bookstore 下面(子元素中)的前四个 book 元素。
//title[@lang] 选取所有属性名为 lang 的 title 元素。
//title[@class='content'] 选取所有属性名为 class并且值="content"的 title 元素。
/bookstore/book[price>35.00] 选取 bookstore 元素下的所有 book 元素,且其中的 price 元素的值须大于 35.00。
* 匹配任何元素节点。
@* 匹配任何属性节点。
node() 匹配任何类型的节点。
/bookstore/* 选取 bookstore 元素的所有子元素。
//* 选取文档中的所有元素。
//title[@*] 选取所有带有属性的 title 元素。
//title I //price 选取文档中的所有 title 和 price 元素。
//div[contains(@class,"a")] 选取所有class值包含a的div元素
//div[contains(@class,"a") and contains(@class,"b")] 选取所有class值包含a和b的div元素
//input[@type='submit' and @name='fuck'] 选取文档中所有属性type值="submit"且属性name值='fuck' 的input元素。
//input[@type='submit' or @name='fuck'] 选取文档中所有属性type值="submit"或属性name值='fuck' 的input元素。

3.代码示例

    import requests
    from lxml import etree
    url = 'xxxx'
    # Python Request get post 代理 常用示例:https://blog.csdn.net/EXIxiaozhou/article/details/127015235?spm=1001.2014.3001.5502
    response = requests.get(url=url)
    web_html = response.text
    selects = etree.HTML(web_html)  # 解析网页源码
    selects.xpath("//input[@type='submit']/text()")  # 获取input元素的文本
    selects.xpath("//input[@type='submit']/@title")  # 获取input元素的title属性值
    li_tag = selects.xpath("//ul[@class='xxx']/li[1]")  # 获取ul元素下的第一个li元素
    li_list = selects.xpath("//ul[@class='xxx']/li")  # 获取ul元素下的所有个li元素,返回list类型
    for li in li_list:
        # 将返回的xpath对象转为html源代码
        li_tag_html = etree.tostring(li, encoding='utf-8', pretty_print=True, method='html').decode("utf-8")
        li.xpath("text()")  # 获取当前li元素的文本

4.Xpath Helper (免费 Chrome 插件)

Xpath Helper 国内下载地址: https://chrome.zzzmh.cn/info?token=hgimnogjllphhhkhlmebbmlgjoejdpjl
Xpath Helper 安装教程: https://blog.csdn.net/qq_54528857/article/details/122202572
Xpath Helper 补充:插件中的xpath表达式和代码中的表达式,语法上是一致的 在这里插入图片描述

总结

以上就是今天要讲的内容,本文仅仅简单介绍了xpath解析web源码的使用,而xpath提供了大量能使我们快速便捷地处理数据的函数和方法,后续有关于xpath的常用代码会在这篇博客中持续更新。
XPath官方手册中文版:https://www.cnblogs.com/armlinux/archive/2006/12/05/2391049.html

目录
相关文章
|
8天前
|
缓存 API 网络架构
淘宝item_search_similar - 搜索相似的商品API接口,用python返回数据
淘宝联盟开放平台中,可通过“物料优选接口”(taobao.tbk.dg.optimus.material)实现“搜索相似商品”功能。该接口支持根据商品 ID 获取相似推荐商品,并返回商品信息、价格、优惠等数据,适用于商品推荐、比价等场景。本文提供基于 Python 的实现示例,包含接口调用、数据解析及结果展示。使用时需配置淘宝联盟的 appkey、appsecret 和 adzone_id,并注意接口调用频率限制和使用规范。
|
17天前
|
存储 安全 测试技术
Python面试题精选及解析
本文详解Python面试中的六大道经典问题,涵盖列表与元组区别、深浅拷贝、`__new__`与`__init__`、GIL影响、协程原理及可变与不可变类型,助你提升逻辑思维与问题解决能力,全面备战Python技术面试。
|
10天前
|
JSON 安全 API
Python处理JSON数据的最佳实践:从基础到进阶的实用指南
JSON作为数据交换通用格式,广泛应用于Web开发与API交互。本文详解Python处理JSON的10个关键实践,涵盖序列化、复杂结构处理、性能优化与安全编程,助开发者高效应对各类JSON数据挑战。
63 1
|
12天前
|
安全 JavaScript Java
Python中None与NoneType的真相:从单例对象到类型系统的深度解析
本文通过10个真实场景,深入解析Python中表示“空值”的None与NoneType。从单例模式、函数返回值,到类型注解、性能优化,全面揭示None在语言设计与实际编程中的核心作用,帮助开发者正确高效地处理“无值”状态,写出更健壮、清晰的Python代码。
76 3
|
18天前
|
存储 程序员 数据处理
Python列表基础操作全解析:从创建到灵活应用
本文深入浅出地讲解了Python列表的各类操作,从创建、增删改查到遍历与性能优化,内容详实且贴近实战,适合初学者快速掌握这一核心数据结构。
89 0
|
18天前
|
存储 小程序 索引
Python变量与基础数据类型:整型、浮点型和字符串操作全解析
在Python编程中,变量和数据类型是构建程序的基础。本文介绍了三种基本数据类型:整型(int)、浮点型(float)和字符串(str),以及它们在变量中的使用方式和常见操作。通过理解变量的动态特性、数据类型的转换与运算规则,初学者可以更高效地编写清晰、简洁的Python代码,为后续学习打下坚实基础。
94 0
|
19天前
|
并行计算 算法 Java
Python3解释器深度解析与实战教程:从源码到性能优化的全路径探索
Python解释器不止CPython,还包括PyPy、MicroPython、GraalVM等,各具特色,适用于不同场景。本文深入解析Python解释器的工作原理、内存管理机制、GIL限制及其优化策略,并介绍性能调优工具链及未来发展方向,助力开发者提升Python应用性能。
90 0
|
6月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
520 29
|
6月前
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
166 4
|
6月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

热门文章

最新文章

推荐镜像

更多