
xPath 是一种html和xml的查询语言,能在其树状结构中寻找节点。
LXML安装:pip install lxml
——xPath使用-----------------------------------------------------------------------------------
获取文本:
//标签1[@属性1="属性值1"]/标签2[@属性2="属性值2"]//text()
获取属性值
//标签1[@属性1="属性值1"]/标签2[@属性2="属性值2"]//@属性n
eg:-------------------------------------------------------------------
from lxml import html
def parse():
"""将html文件中内容 使用xpath进行提取"""
#读取文件中的内容
f =open('/static/indexhtml', 'r', encoding='utf-8')
s = fread()
selector = htmlfromstring(s)
# 解析a 标签内容
a = selectorxpath('//div[@id="container"]/a/text()')
print(a[0])
# 解析href属性
alink = selectorxpath('//div[@id="container"]/a/@href')
print(alink[0])
fclose()
if __name__=='__main__':
parse()
$('#id')siblings() 当前元素所有的兄弟节点
$('#id')prev() 当前元素前一个兄弟节点
$('#id')prevaAll() 当前元素之前所有的兄弟节点
$('#id')next() 当前元素之后第一个兄弟节点
$('#id')nextAll() 当前元素之后所有的兄弟节点
这三个方法都可以添加选择器,给出选择条件,就能找到你指定的兄弟节点了。
之前写过相对父元素及下一个兄弟元素的方法。
这次补充一下xpath相对节点位置查找元素的所有方法。例子就不举了,自己可以去练练。
xpath相对节点查找方法:
1、xpath('/ancestor::')
查找当前节点的所有先辈节点,即父节点或祖父节点
2、xpath('/ancestor-or-self::')
查找当前节点的所有先辈节点以及本身
3、xpath('/attribute::')
获取当前节点的所有属性
4、xpath('/child::')
查找当前节点的所有子节点
5、xpath('/descendant::')
获取当前节点的所有后代节点,即子节点、孙节点
6、xpath('/following::')
获取当前节点结束标签后的所有节点
7、xpath('/following-sibing::')
获取当前节点的下一个兄弟节点
8、xpath('/parent::')
获取当前节点的父节点
9、xpath('/preceding::')
获取当前节点开始标签前的所有节点
10、xpath('/preceding-sibing::')
获取当前节点的上一个兄弟节点
11、xpath('/self::')
选取当前节点
大概也就这么多,这些方法非常实用,特别是有些元素通过自己的属性无法查找到的时候就需要通过相对节点的位置来查找。
在定位第一个栏目并模拟点击时,无法使用click方法,原来是左边的图标遮挡了a标签,导致无法点击。
driverfind_element_by_xpath("//a[text()='xxx']")click()
这个时候要使用ENTER方法:
from seleniumwebdrivercommonkeys import Keys
driverfind_element_by_xpath("//a[text()='xxx']")send_keys(KeysENTER)
扩展资料
Firebug和Firepath,基本上足够你去定位元素了,如果你对XPATH熟悉,Firebug一个就足够了。
主要的定位方式:id,name,identifier,js,link,css如果这些都不行,那么用xpath几乎能百发百中的
能用固定的属性,比如id,name(当然要唯一),tagname等的,尽量去用。没办法了再用XPATH,这样后期维护会省很多力气,减少因为程序员调皮改代码影响你的脚本。
开源和价格不谈以外,QTP有keyword view不会编程的照样做自动化,webdriver就会傻瞪眼,除非谁还把seleniumIDE挖出来玩玩。
以上就是关于xPath与html全部的内容,包括:xPath与html、xpath如何获取标签内容相同的兄弟节点、通过xpath相对节点位置查找元素等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)