xpath语法及其使用教程
一. XPATH
1. 什么是xpath?
xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历。
2. 常用的xpath开发工具
(1) Chrome插件XPath Helper(推荐使用)。
(2) Firefox插件Try XPath。
3. xpath语法(核心)
(1) 选取节点:XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。
表达式 | 描述 | 示例 | 结果 |
---|---|---|---|
nodename | 选取此节点的所有子节点 | bookstore | 选取bookstore下所有的子节点 |
/ | 如果是在最前面,代表从根节点选取。否则选择某节点下的某个节点 | /bookstore | 选取根元素下所有的bookstore节点 |
// | 从全局节点中选择节点,随便在哪个位置 | //book | 从全局节点中找到所有的book节点 |
@ | 选取某个节点的属性 | //book[@price] | 选择所有拥有price属性的book节点 |
. | 当前节点 | ./a | 选取当前节点下的a标签 |
(2) 谓语:谓语用来查找某个特定的节点或者包含某个指定的值的节点,被嵌在方括号中。
路径表达式 | 描述 |
---|---|
/bookstore/book[1] | 选取bookstore下的第一个子元素 |
/bookstore/book[last()-1] | 选取bookstore下的倒数第二个book元素。 |
bookstore/book[position()<3] | 选取bookstore下前面两个子元素。 |
//book[@price] | 选取拥有price属性的book元素 |
//book[@price=10] | 选取所有属性price等于10的book元素 |
(3) 通配符 *
通配符 | 描述 | 示例 | 结果 |
---|---|---|---|
* | 匹配任意节点 | /bookstore/* | 选取bookstore下的所有子元素。 |
@* | 匹配节点中的任何属性 | //book[@*] | 选取所有带有属性的book元素。 |
(4) 选取多个路径 |:通过在路径表达式中使用“|”运算符,可以选取若干个路径。
//bookstore/book | //book/title # 选取所有book元素以及book元素下所有的title元素
(5) string()提取某标签下及其所有子孙节点中的文本(重要)
1.响应文本内容:
<div class="text">哈哈哈哈哈哈<ul class="show"><li>275万购昌平邻铁三居 总价20万买一居</li><li>00万内购五环三居 140万安家东三环</li><li>北京首现零首付楼盘 53万购东5环50平</li><li>京楼盘直降5000 中信府 公园楼王现房</li>哈哈哈哈哈哈哈</ul>
</div>2.提取该标签下以及其所有子孙节点下的文本
>>> from lxml import etree
...
>>> result = html.xpath(" string(//div[@class='text']) ")'哈哈哈哈哈哈 275万购昌平邻铁三居 总价20万买一居 00万内购五
环三居 140万安家东三环 北京首现零首付楼盘 53万购东5环50平京楼盘直降5000 中信府 公园楼王现房 哈哈哈哈哈哈 '
二. LXML库
1. 什么是lxml?
lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据。
lxml和正则一样,也是用 C 实现的,是一款高性能的 Python HTML/XML 解析器,我们可以利用之前学习的XPath语法,来快速的定位特定元素以及节点信息。
lxml python 官方文档:http://lxml.de/index.html
需要安装C语言库,可使用 pip 安装:pip install lxml
2. lxml和xpath的结合使用(注意parse函数和HTML函数的用法)
(1) 从外部文件引入html等文档进行解析
from lxml import etree# parse引入外部文档进行解析html = etree.parse('hello.html') print type(html) # 显示etree.parse() 返回类型result = html.xpath('//li')print(result) # 打印<li>标签的元素集合
(2) 直接对字符串进行解析(爬虫常用)
# 这里只是打个样,具体的参数填入还需看个人需求
from lxml import etree
# html_str是unicode类型的字符串,通常是爬取下来的text类型数据
html = etree.HTML(html_str)
# 根据得到的html对象 调用 xpath语法 进行解析
div_list = html.xpath("//div[@class='col1 old-style-col1']/div")
xpath语法及其使用教程相关推荐
- 网页结构的简介和Xpath语法的入门教程
相信很多小伙伴已经听说过Xpath,之前小编也写过一篇关于Xpath的文章,感兴趣的小伙伴可以戳这篇文章如何利用Xpath抓取京东网商品信息以及Python网络爬虫四大选择器(正则表达式.BS4.Xp ...
- xpath语法java_xpath语法及其使用教程
一. XPATH 1. 什么是xpath? xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. 2. 常 ...
- python xpath爬虫_Python爬虫(2):XPath语法
OK,上次我们说到了网页爬虫的一个思路:首先说一下网页爬虫的整个思路方法:先爬取整个网页,也就是将网页的源代码给获取下来 爬取下来的网页再通过文本解析提取,找到我们需要的信息,可以是图片或者文字 然后 ...
- Python 中 xpath 语法 与 lxml 库解析 HTML/XML 和 CSS Selector
The lxml.etree Tutorial :https://lxml.de/tutorial.html python3 解析 xml:https://www.cnblogs.com/deadwo ...
- XPath最通俗的教程(ZZ)
以下是本人找到的最完整最易懂的XPath教程,不敢私藏,拿出来与大家分享.帮我点旁边的google广告呀. 实例 1 基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那 ...
- 《手把手教你》系列基础篇之4-python+ selenium自动化测试-xpath使用(详细教程)
简介 俗话说:磨刀不误砍柴工,因此在我们要开始写自动化脚本之前,我们先来学习和了解几个基本概念,在完全掌握了这几个概念之后,有助于我们快速上手,如何去编写自动化测试脚本. 元素,在这个教程系列,我们说 ...
- Python爬虫xpath语法及案例使用
Python爬虫之xpath语法及案例使用 ---- 钢铁侠的知识库 2022.08.15 我们在写Python爬虫时,经常需要对网页提取信息,如果用传统正则表达去写会增加很多工作量,此时需要一种对数 ...
- XPath语法 — 从XML文档树中摘果子
项目中看到同事写的这样几句话: 1 string xmlStr = WeiXin.RedPack.GetCachred(user.OpenID, red, "爱西姆", " ...
- java xpath语法_XPath详解
以下是本人找到的最完整最易懂的XPath教程,不敢私藏,拿出来与大家分享. 实例 1 基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路 ...
最新文章
- VUE做一个公共的提示组件,显示两秒自动隐藏,显示的值父组件传递给子组件
- 无准备,不编程——计算机达人成长之路(15)连载
- 【直播】陈安东,但扬:CNN模型搭建、训练以及LSTM模型思路详解
- 用命令行查看局域网的其他在线的ip
- 海尔推“智能服务”标准 家电产业迎来“互联网+”
- swift_041(Swift的@noescape和@escaping)
- 关于MySQL 5.6 中文乱码的问题(尤其是windows的gbk编码)
- 启明云端应用分享|基于乐鑫 ESP-WIFI-MESH 的智能自助洗衣房
- 《TCP/IP详解》笔记----第二章 链路层
- 工作137:map函数
- sql 为什么要用where 1=1或者where 1 =0 ?
- regini.exe使用方法
- python输出关键字的行号_python – 使用关键字行号创建字典
- java大神养成计划
- cp、mv、rm、find、mkdir
- 用大前端技术实现的一款仿Boss直聘app(已开源)
- 单片机音频谱曲软件_51单片机蜂鸣器音乐简谱转换工具
- 51单片机c语言程序控制,51单片机C语言总结
- 计算机网络中传输层传送的是什么,传输层
- ping 不通 华为三层交换机vlan_华为三层交换机VLAN间路由怎么设置
热门文章
- 报错: com.atomikos.datasource.ResourceException: resume for XID
- 【小5聊】公众号排查<该公众号提供的服务出现故障,请稍后>
- 深度学习(7):基于LSTM算法的股票走势预测
- Servlet+MyBatis+jsp综合案例-----员工信息管理
- 中国智能安防行业前景研究及“十四五”规划分析报告2022-2027年版
- Learning from Imbalanced Data 翻译和阅读笔记
- 剖析ViewState的作用
- 阿里云服务器购买教程(新手入门指南)
- I 'd be the man-我定是主宰者
- freeRTOS+littlevgl的综合demo