目录一、XPATH概念XPath是一种用于在 XML 文档中定位和选择节点的语言。它是一种在 XML 文档中导航和查询数据的尺度方式,通常用于从 XML 文档中提取特定信息或实行数据操纵。XPath 利用路径表达式来遍历 XML 树,并且支持多种功能,如节点选取、字符串匹配、数值计算、逻辑运算等,可以资助用户正确定位到文档中所需的节点或内容。XPath 的语法雷同于文件系统路径,通过利用斜杠(/)、双斜杠(//)、方括号([])等符号来描述节点之间的层次关系和属性条件,从而实现对 XML 结构的机动查询和筛选。XPath 在 XML 数据处理、Web 抓取、XSLT 转换等范畴广泛应用,为处理和操纵 XML 数据提供了强盛的工具和方法。 二、常用规则与方法我们现用表格列举一下几个常用规则:
1.f12例子:[code]<div> <ul> <li class="item-0"> <a href="https://ask.hellobi.com/link1.html" rel="external nofollow" >第一项</a> </li> <li class="item-1"> <a href="https://ask.hellobi.com/link2.html" rel="external nofollow" >第二项</a> </li> <li class="item-inactive"> <a href="https://ask.hellobi.com/link3.html" rel="external nofollow" >第三项</a> </li> <li class="item-1"> <a href="https://ask.hellobi.com/link4.html" rel="external nofollow" >第四项</a> </li> </ul> </div> [/code]2.节点获取文本获取first item文本
3.属性匹配在选取的时间我们还可以用 @ 符号举行属性过滤,好比在这里假如我们要选取 class 为 item-0 的 li 节点,可以这样实现: [code]dr.find_element(By.XPATH,'//li/a[@class="item-0"]') [/code]在这里我们通过参加 [@class=“item-0”] 就限制了节点的 class 属性为 item-0,文本中符合条件的 li 节点有一个,以是返回结果应该返回匹配到的元素,结果如下: [code]第一项[/code]4. 属性获取我们知道了用 text() 可以获取节点内部文本,那么节点属性该怎样获取呢?其实还是用 @ 符号就可以,比方我们想获取全部 li 节点下全部 a 节点的 href 属性,代码如下: [code]dr.find_element(By.XPATH,'//li/a/@href') [/code]在这里我们通过 @href 即可获取节点的 href 属性 我们还能利用selenium里dr.find_elements方法,用for循环取便历全部的"//li/a",用.get_attribute(‘href’),将全部的href属性全部获取,代码如下: [code]a=dr.find_elements(By.XPATH,'//li/a') for href in a: print(href.get_attribute('href')) [/code]5.iframe标签处理当有frame标签时须要利用他的id来举行切换,要不然不能取到frame标签下的内容 语法: [code]switch_to.frame(“frame_id”)[/code]例子: [code]<body> <iframe src = "a.html" id = "frame_id" name = "myframe"> </iframe> </body> [/code]如何定位到iframe呢: [code] from selenium import webdriver driver = webdriver.Chrome() #用frame的index来定位,第一位时0 driver.switch_to.frame(0) [/code]三、同级节点元素定位【同级元素】:
通过li[2]QQ登录利用following-sibling::找微博登录: [code]dr.find_element(By.XPATH,'//div[@class='_3x8w3YCi']/ul/li[2]/following-sibling::li[1]') [/code]
四、关键字定位根据文本找位置 [code]dr.find_element(By.XPATH,'//li/a[text()="第一项"]') [/code]五、定位父级元素【父级元素】 [code]/parent::[/code]如下面的xpath,定位ul下的li包罗"处理"的文本,然后再定位该li的父级元素 完备代码: [code]dr.find_element(By.XPATH,'ul/li/parpent::*')[/code]到此这篇关于selenium XPath定位的实现示例的文章就先容到这了,更多相关selenium XPath定位内容请搜刮脚本之家从前的文章或继承浏览下面的相关文章希望各人以后多多支持脚本之家! 来源:https://www.jb51.net/python/328975yv9.htm 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|手机版|小黑屋|梦想之都-俊月星空
( 粤ICP备18056059号 )|网站地图
GMT+8, 2025-7-1 16:55 , Processed in 0.031697 second(s), 19 queries .
Powered by Mxzdjyxk! X3.5
© 2001-2025 Discuz! Team.