Python Xpath解析 数据提取 基本使用
Python Xpath解析 数据提取 使用介绍&常用示例
文章目录
前言
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