xpath使用

XPath入门 Selenium使用Xpath定位 Xpath介绍,语法,节点类型,数据类型,以及Selenium自动化中使用简单的Xpath定位 阅读详情

帮助文档
https://www.w3.org/TR/xpath/

基础语法

表达式描述
/选中文档的根
.(点)选中当前节点
…(点点)选中当前节点的父节点
ELEMENT选中子节点中所有ELEMENT元素节点
//ELEMENT选中后代节点中所有ELEMENT元素节点
*选中所有元素子节点
text()选中所有文本子节点
@ATTR选中名为ATTR的属性节点
@*选中所有属性节点

创建html文档

from scrapy.selector import Selector
from scrapy.http import HtmlResponse

body='''
<html>
	<head>
		<base href='http://example.com/'>
		<title>Example website</site>
	</head>
	<body>
		<div id='images'>
			<a href='image1.html'>Name:Image 1 <br/><img src='image1.jpg' /></a>
			<a href='image2.html'>Name:Image 2 <br/><img src='image2.jpg' /></a>
			<a href='image3.html'>Name:Image 3 <br/><img src='image3.jpg' /></a>
			<a href='image4.html'>Name:Image 4 <br/><img src='image4.jpg' /></a>
			<a href='image5.html'>Name:Image 5 <br/><img src='image5.jpg' /></a>
		</div>
	</body>
</html>
'''

response = HtmlResponse(url='http://www.example.com',body=body,encoding='utf8')

获取根路径

print(response.xpath('/html'))
[<Selector xpath='/html' data='<html>\n\t<head>\n\t\t<base href="http://e...'>]

print(response.xpath('/html/head'))
[<Selector xpath='/html/head' data='<head>\n\t\t<base href="http://example.c...'>]


获取div下的所有a标签

print(response.xpath('/html/body/div/a'))
[<Selector xpath='/html/body/div/a' data='<a href="image1.html">Name:Image 1 <b...'>, 
<Selector xpath='/html/body/div/a' data='<a href="image2.html">Name:Image 2 <b...'>,
<Selector xpath='/html/body/div/a' data='<a href="image3.html">Name:Image 3 <b...'>, 
<Selector xpath='/html/body/div/a' data='<a href="image4.html">Name:Image 4 <b...'>,
<Selector xpath='/html/body/div/a' data='<a href="image5.html">Name:Image 5 <b...'>]

选中文档中的所有a标签

print(response.xpath('//a'))
[<Selector xpath='//a' data='<a href="image1.html">Name:Image 1 <b...'>, 
<Selector xpath='//a' data='<a href="image2.html">Name:Image 2 <b...'>, 
<Selector xpath='//a' data='<a href="image3.html">Name:Image 3 <b...'>, 
<Selector xpath='//a' data='<a href="image4.html">Name:Image 4 <b...'>, 
<Selector xpath='//a' data='<a href="image5.html">Name:Image 5 <b...'>]

选中body后代中所有的img

print(response.xpath('/html/body//img'))
[<Selector xpath='/html/body//img' data='<img src="image1.jpg">'>, 
<Selector xpath='/html/body//img' data='<img src="image2.jpg">'>, 
<Selector xpath='/html/body//img' data='<img src="image3.jpg">'>, 
<Selector xpath='/html/body//img' data='<img src="image4.jpg">'>, 
<Selector xpath='/html/body//img' data='<img src="image5.jpg">'>]

获取所有a标签的文本

print(response.xpath('//a/text()').extract())
['Name:Image 1 ', 'Name:Image 2 ', 'Name:Image 3 ', 'Name:Image 4 ', 'Name:Image 5 ']

获取html的所有元素子节点

print(response.xpath('/html/*'))
[<Selector xpath='/html/*' data='<head>\n\t\t<base href="http://example.c...'>, 
<Selector xpath='/html/*' data='<body>\n\t\t<div id="images">\n\t\t\t<a href...'>]

获取div的所有后代元素节点

print(response.xpath('/html/body/div//*'))
[<Selector xpath='/html/body/div//*' data='<a href="image1.html">Name:Image 1 <b...'>, 
<Selector xpath='/html/body/div//*' data='<br>'>, 
<Selector xpath='/html/body/div//*' data='<img src="image1.jpg">'>, 
<Selector xpath='/html/body/div//*' data='<a href="image2.html">Name:Image 2 <b...'>, 
<Selector xpath='/html/body/div//*' data='<br>'>, 
<Selector xpath='/html/body/div//*' data='<img src="image2.jpg">'>, 
<Selector xpath='/html/body/div//*' data='<a href="image3.html">Name:Image 3 <b...'>, 
<Selector xpath='/html/body/div//*' data='<br>'>, 
<Selector xpath='/html/body/div//*' data='<img src="image3.jpg">'>, 
<Selector xpath='/html/body/div//*' data='<a href="image4.html">Name:Image 4 <b...'>, 
<Selector xpath='/html/body/div//*' data='<br>'>, 
<Selector xpath='/html/body/div//*' data='<img src="image4.jpg">'>, 
<Selector xpath='/html/body/div//*' data='<a href="image5.html">Name:Image 5 <b...'>, 
<Selector xpath='/html/body/div//*' data='<br>'>, 
<Selector xpath='/html/body/div//*' data='<img src="image5.jpg">'>]

获取div孙节点中所有的img

print(response.xpath('//div/*/img'))
[<Selector xpath='//div/*/img' data='<img src="image1.jpg">'>, 
<Selector xpath='//div/*/img' data='<img src="image2.jpg">'>, 
<Selector xpath='//div/*/img' data='<img src="image3.jpg">'>, 
<Selector xpath='//div/*/img' data='<img src="image4.jpg">'>, 
<Selector xpath='//div/*/img' data='<img src="image5.jpg">'>]

获取所有img的src属性

print(response.xpath('//img/@src'))
[<Selector xpath='//img/@src' data='image1.jpg'>, 
<Selector xpath='//img/@src' data='image2.jpg'>, 
<Selector xpath='//img/@src' data='image3.jpg'>, 
<Selector xpath='//img/@src' data='image4.jpg'>, 
<Selector xpath='//img/@src' data='image5.jpg'>]

获取所有的href属性

print(response.xpath('//@href'))
[<Selector xpath='//@href' data='http://example.com/'>, <Selector xpath='//@href' data='image1.html'>, 
<Selector xpath='//@href' data='image2.html'>, 
<Selector xpath='//@href' data='image3.html'>, 
<Selector xpath='//@href' data='image4.html'>, 
<Selector xpath='//@href' data='image5.html'>]

获取第一个a标签下的img的所有属性

print(response.xpath('//a[1]/img/@*'))
[<Selector xpath='//a[1]/img/@*' data='image1.jpg'>]

获取第一个a标签的选择器对象

print(response.xpath('//a')[0].xpath('.//img'))
[<Selector xpath='.//img' data='<img src="image1.jpg">'>]

print(response.xpath('//a[1]').xpath('.//img'))
[<Selector xpath='.//img' data='<img src="image1.jpg">'>]

获取所有img在父节点

print(response.xpath('//img/..'))
[<Selector xpath='//img/..' data='<a href="image1.html">Name:Image 1 <b...'>, 
<Selector xpath='//img/..' data='<a href="image2.html">Name:Image 2 <b...'>, 
<Selector xpath='//img/..' data='<a href="image3.html">Name:Image 3 <b...'>, 
<Selector xpath='//img/..' data='<a href="image4.html">Name:Image 4 <b...'>, 
<Selector xpath='//img/..' data='<a href="image5.html">Name:Image 5 <b...'>]

选择所有a中的第三个

print(response.xpath('//a[3]'))
[<Selector xpath='//a[3]' data='<a href="image3.html">Name:Image 3 <b...'>]

使用last函数,选中最后一个

print(response.xpath('//a[last()]'))
[<Selector xpath='//a[last()]' data='<a href="image5.html">Name:Image 5 <b...'>]

使用position函数,选中前三个

print(response.xpath('//a[position()<=3]'))
[<Selector xpath='//a[position()<=3]' data='<a href="image1.html">Name:Image 1 <b...'>, 
<Selector xpath='//a[position()<=3]' data='<a href="image2.html">Name:Image 2 <b...'>, 
<Selector xpath='//a[position()<=3]' data='<a href="image3.html">Name:Image 3 <b...'>]

选中所有含有id属性的div

print(response.xpath('//div[@id]'))
[<Selector xpath='//div[@id]' data='<div id="images">\n\t\t\t<a href="image1....'>]

选中所有含有id属性并且值为images的div

print(response.xpath('//div[@id="images"]'))
[<Selector xpath='//div[@id="images"]' data='<div id="images">\n\t\t\t<a href="image1....'>]

xpath常用函数

string(arg):返回参数的字符串值

获取strong的值
from scrapy.selector import Selector
text = '<a href="#">Click here to go to the <strong>Next Page</strong></a>'
sel = Selector(text=text)
res = sel.xpath('string(/html/body/a/strong)').extract()
print(res)

res1 = sel.xpath('/html/body/a/strong/text()')
print(res1)

结果:
['Next Page']
[<Selector xpath='/html/body/a/strong/text()' data='Next Page'>]
获取a标签中的两个值
from scrapy.selector import Selector
text = '<a href="#">Click here to go to the <strong>Next Page</strong></a>'
sel = Selector(text=text)
res = sel.xpath('string(/html/body/a//text())').extract()
print(res)

res1 = sel.xpath('string(/html/body/a)').extract()
print(res1)

结果:
['Click here to go to the ']
['Click here to go to the Next Page']

contains(str1,str2):判断str1中是否包含str2,返回布尔值

text = '''
<div>
    <p class="small info">hello world</p>
    <p> class="normal info">hello scrapy</p>
</div>
'''
sel = Selector(text=text)
print(sel.xpath('//p[contains(@class,"small")]'))
print(sel.xpath('//p[contains(@class,"info")]'))
结果:
[<Selector xpath='//p[contains(@class,"small")]' data='<p class="small info">hello world</p>'>]
[<Selector xpath='//p[contains(@class,"info")]' data='<p class="small info">hello world</p>'>]

child:选取当前节点的所有子元素
parent:选取当前节点的父节点
ancestor:选取当前节点的所有先辈(父、祖父等)
ancestor-or-self:选取当前节点的所有先辈(父、祖父等)以及当前节点本身
descendant:选取当前节点的所有后代元素(子、孙等)
descendant-or-self:选取当前节点的所有后代元素(子、孙等)以及当前节点本身
preceding:选取文档中当前节点的开始标记之前的所有节点
following:选取文档中当前节点的结束标记之后的所有节点
preceding-sibling:选取当前节点之前的所有同级节点
following-sibling:选取当前节点之后的所有同级节点
self:选取当前节点
attribute:选取当前节点的所有属性
namespace:选取当前节点的所有命名空间节点
在这里插入图片描述
xpath运算符
在这里插入图片描述
在这里插入图片描述

mysql 计算不同胜率的活跃玩家的次日,3日,7日留存率 它根据每天的日期(logymd)和最高段位(max_rank)、胜率段落(win_rate_segment)进行分组,并计算总玩家人数(total_players)、第二天的留存人数(next_day_players)、第三天的留存人数(day3_players)和第七天的留存人数(day7_players)。注意:不是新手留存,是段位活跃玩家留存;最终的结果则是将留存数据进行展示,按照日期(date)、最高段位(rank_level)、胜率段落(win_rate_segment)进行排序。 阅读详情

相关推荐

基于奥比中光Orbbec Astra Pro与ROS实现实时3D环境建模:orb_slam2实战指南

本文提供了一份详细的实战指南,介绍如何使用奥比中光Orbbec Astra Pro深度摄像头与ROS系统,部署并运行ORB-SLAM2算法,实现实时3D环境建模与定位。内容涵盖从驱动安装、环境配置、算法编译到摄像头标定与性能调优的全流程,旨在帮助开发者快速搭建一套高性价比的视觉SLAM系统。

weixin_29054399的博客 333

Requests+Xpath(爬取图片)

import requests from lxml import etree j=0 for i in range(0,6): r=requests.get('https://book.douban.com/tag/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C?'+'start=%d&amp;amp;amp;type=T'%i*20).content books=et...

As的博客 7165

单细胞 | pySCENIC·转录因子分析(二)

接上一篇,pySCENIC分析完之后就可以进行可视化了,个人认为最重要的有三个图:rss点图,rank图,转录因子表达水平热图,3个图结合着看。3.可视化rank图,可以自己改一下plotRSS_oneSet参数让图更好看一点。4. regulon表达水平热图,转录因子表达水平同理,得到的图类似只是输入不一样。2.可视化点图:寻找cluster特异性转录因子。1.loom文件读入R,提取数据。

生信练习生 4283

TypeError:Unable to serialize <tf.Variable ‘alpha:0‘ shape=() dtype=float32, numpy=0.8> to JSON.

TypeError:Unable to serialize to JSON.

aaaq_的博客 1412

【数据分析生命周期全揭秘】从零开始打造你的数据科学项目 | 最全指南

在当今数据驱动的世界中,数据科学正在颠覆传统行业,成为企业决策和价值创造的重要引擎。然而,如何科学、系统地开展一个数据分析项目?这是很多人关心的核心问题。本篇文章基于经典数据分析课程内容,深入解读数据分析生命周期的每个阶段,让你快速掌握从“发现问题”到“落地应用”的完整流程。如果你正在学习或准备从事数据分析领域,这篇文章一定会对你大有帮助!数据分析生命周期的六大阶段数据分析生命周期的六个阶段相辅相成,每个阶段都至关重要:发现问题:明确需求,提出假设。数据准备:清洗、转换和可视化数据。

AI手套的博客 1739

37张图详解MAC地址、以太网、二层转发、VLAN

MAC 地址 每个网卡或三层网口都有一个 MAC 地址, MAC 地址是烧录到硬件上,因此也称为硬件地址。MAC 地址作为数据链路设备的地址标识符,需要保证网络中的每个 MAC 地址都是唯一的,才能正确识别到数据链路上的设备。 MAC 地址由 6 个字节组成。前 3 个字节表示厂商识别码,每个网卡厂商都有特定唯一的识别数字。后 3 个字节由厂商给每个网卡进行分配。厂商可以保证生产出来的网卡不会有相同 MAC 地址的网卡。 现在可以通过软件修改 MAC 地址,虚拟机使用物理机网卡的 MAC 地址,并不能保.

networktp的博客 4745

网络爬虫_xpath

from lxml import etree #https://mirrors.aliyun.com/pypi/simple/ python仓库 wb_data = """ <div> <ul> <li class="item-0"><a href="link1.html">first item</a></li> <li class="item-1"&g.

lhy857的博客 639

实战指南:如何优雅解决SpringBoot3与Mybatis-Plus的版本兼容性问题

本文深入解析SpringBoot3与Mybatis-Plus的版本兼容性问题,提供实战解决方案。通过Maven依赖排除策略、Gradle配置方案及自动配置覆盖策略,有效解决包冲突和初始化顺序问题,确保项目平稳升级。适用于开发者快速解决SpringBoot3与Mybatis-Plus的集成难题。

weixin_28432777的博客 597

xpath简介以及工具安装

Xpath语法和lxml模块 什么是 Xpath xpath( XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历。 Xpath开发工具 1. Chromey插件 Xpath Helper 2. Firefox插件 Xpath Checker。 Xpath语法详解 谓语: 谓语用来查找某个特定的节点或者包含某个指定的...

程序员杂谈 2135

白话讲解帕累托前沿点(Pareto Frontier)基础知识与实例解析

排除所有“劣解”,缩小决策范围;量化目标间的“权衡关系”(如“每增加1千元成本,续航提升多少小时”);支持不同场景下的个性化选择,平衡冲突目标。无论是手机选购、汽车设计,还是城市规划,帕累托前沿都是从“混乱的多目标”到“清晰的权衡”的关键桥梁,是现代决策科学中不可或缺的工具。通过数学建模,工程很多问题都可以建模成帕累托前沿求解问题,通过线性规划CPLEX、Gurobi 等优化工具,可以方便进行求解。

2138

【PCIe 总线及设备入门学习专栏 6.2 -- PCIe VDM (Vendor Defined Messages)】

在PCIe协议中,Vendor Defined Messages (VDMs) 是一种允许厂商定义和传输特定功能的消息类型。这种机制扩展了标准 PCIe 消息的功能,可以用于实现供应商自定义的功能,例如固件更新、设备配置和诊断信息传输。PCIe VDM 是通过实现的,它遵循 PCIe 协议栈的结构,包括事务层、数据链路层和物理层。

CodingCos的博客 1895

python使用xpath提取a标签中的img数据_使用xPath提取嵌套的“img src”

我对使用Scrapy或python来处理这个问题还比较陌生。我希望从几个不同的链接中提取,我在使用HTMLXPathSelector表达式(语法)时遇到问题。我查看了大量的文档以了解正确的语法,但是还没有找到解决方案。在下面是一个我试图从中提取“img src”的链接示例:from scrapy.spider import BaseSpiderfrom scrapy.selector import...

weixin_39533361的博客 3449

CANoe:入门介绍

CANoe网络通信分析:CANoe用户可以在台架上或者车辆中分析ECU和整个系统的多总线通信。Trace窗口:用于列出所有总线活动,例如消息或错误帧。对于每条消息,都可以显示单独的信号值Graphics窗口:用于在时间轴上以图形方式在线显示消息和诊断请求中传输的值,例如rpm或温度值Statistics窗口:用于显示有用的网络和节点统计信息,例如节点和帧级别的总线负载、突发计数器/持续时间、帧和错误的计数器/速率、控制器状态Data窗口:用于显示预选数据,例如数字或条形图数据。

jasonj333 9746

php 使用xpath_在PHP中使用XPath

常用缩略语 API:应用程序编程接口 CRUD:创建,读取,更新和删除 CSS:级联样式表 DOM:文档对象模型 JSON:JavaScript对象表示法 RDF:资源描述框架 REST:代表性状态转移 RSS:真正简单的联合 SKU:库存单位 URI:统一资源标识符 W3C:万维网联盟 XHTML:可扩展超文本标记语言 XPath:XM...

cuxiong8996的博客 2297

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Xpath的使用

📋个人简介💖作者简介大家好,我是W_chuanqi,一个编程爱好者😀支持我💬愿你我共勉“若身在泥潭,心也在泥潭,则满眼望去均是泥潭;若身在泥潭,而心系鲲鹏,则能见九万里天地。”✨✨✨。...

W_chuanqi的博客 3863

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

XPath的使用

XPath 全称: XML Path Language 即 XML 路径语言。用来在XML文档中查找信息。它虽然最初是用来搜寻 XML 文档的, 但同样使用与 HTML 文档的搜素XPath 提供了100多个内建函数, 用于字符串, 数值,, 时间的匹配以及节点,序列的处理等。几乎所有想要定位的节点都可以用 XPath 选择常用规则:例如: //title[@lang='eng']代表选取所有名称为title , 同时属性 lang 为 end 的节点。

qq_39217312的博客 1193

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

xpath基本使用方法

文章目录xpath helper安装XPATH语法在python中使用XPATH基本方式案例 xpath helper安装 下载 链接:https://pan.baidu.com/s/1ukDFizJ60gv6rEqkZkK6IA 提取码:cg0w 安装 解压xpath-helper.rar,然后得到一个解压到到一个目录; 在chrome浏览器的导航栏输入chrome://extensions,打开开发者模式; 点击“加载已解压的扩展程序”,选择解压的文件夹,安装成功 设置快捷键 在导航栏

wingwqr的专栏 2333

python使用xpath语言解析遍历HTML\XML 文档中元素,属性以及xpath的基本认识,xpath_helper的简单使用

为什么要学习xpath和lxml lxml是一款高性能的 Python HTML/XML 解析器,我们可以利用XPath(解析的语言),来快速的定位特定元素以及获取节点信息 lxml库需要安装 安装语句: 在cmd命令行中输入:pip install lxml 如果安装lxml库出错,建议自行百度查找方法 什么是xpath XPath (XML Path Language) 是一门在 HTML\XML 文档中查找信息的语言,可用来在 HTML\XML 文档中对元素和属性进行遍历。 W3School官方文

weixin_55579895的博客 2073

python xpath使用

xpath使用xpathxpath介绍xml文档节点xpath工具xpath工具的使用lxml模块 xpath xpath介绍 概念 —— 一种XML查询语言,在XML文档中通过元素和属性进行导航 XML概念 —— 一种标记语法的文本格式 lxml模块 —— 包含将html文本转成xml对象,和对对象执行xpath功能 xml文档节点 <bookstore> <book> <title lang='eng'>Harry Potter</title&g

Jaydenzuo的博客 210

python中xpath使用案例_python中使用XPath

XPath在Python的爬虫学习中,起着举足轻重的地位,对比正则表达式 re两者可以完成同样的工作,实现的功能也差不多,但XPath明显比re具有优势,在网页分析上使re退居二线。XPath介绍:是什么? 全称为XML Path Language一种小型的查询语言说道XPath是门语言,不得不说它所具备的优点:1) 可在XML中查找信息2) 支持HTML的查找3) 通过元素和属性进行导航pyt...

weixin_39606638的博客 490

XPath语法 在C#中使用XPath示例

 XPath语法 在C#中使用XPath示例 http://www.cnblogs.com/yukaizhao/archive/2011/07/25/xpath.html  XPath可以快速定位到Xml中的节点或者属性。XPath语法很简单,但是强大够用,它...

Melody1994的博客 378

selenium之xpath使用

XPath即XML路径语言,支持从xml或html中查找元素节点,使用XPath完全可以替代其他定位放式,如: find_element_by_xpath('//*[@id=""]')等同于find_element_by_id("") find_element_by_xpath('//*[@name=""]')等同于find_element_by_name("") find_element_by_xpath('//*[@class=""]')等同于find_element_by_class_name(

一个菜鸟的博客 8882

如何使用XPath解析网页

Parsing pages with XPath. Today I will tell you how you can make parsers of remote HTML pages (in PHP). In this article I will show you how to perform xpath queries to Web pages. XPath – a query langu...

cuke3186的博客 2714

xpath中如何使用变量

xpath (python)xpath中如何使用变量 描述: 在xpath中该如何使用变量,想选择id是某个值的元素,这个值是个变量。 response.xpath('//div[@id=val]').extract_first() 其中val的值是'images',xpath中使用变量的语法是什么 。 解决方案1: 你这个是python语句,为什么不用字符串拼接把这个表达式拼接起来呢...

大数据-攻城狮 3453
上一篇: 爬虫
下一篇: css选择器
linuxvfast
博客等级 码龄10年 6粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值