Xpath转Css写法图
image.pngXpath等价于css的一些写法
Xpath路径表达式 | CSS选择器表达式 |
---|---|
只通过绝对路径、标签定位 | |
/html/body | html>body |
/html/body/div/div[@class="bar"] | html>body>div>div.bar |
/html//div | html div |
/html//div/ul//li | html div>ul li |
通过相对路径、标签、属性值定位 | |
//div[@class="header"] | div.header |
//div[@class="ush top_wrap"] | div.top_wrap |
//div[@class="ush top_wrap"]/a[@class="more"] | div.top_wrap>a.more |
通过标签、属性值、通配符定位 | |
//* | * |
//*[@class="header"] | [class="header"]或 .header |
//*[@id="languagelist"] | [id="languagelist"]或 #languagelist |
//*[@id="languagelist"]/li[2] | #languagelist>li:nth-child(2) |
//div[@class="header"]//ul[@id="languagelist"]/* | div.header ul#languagelist >* |
通过下标 或 属性定位 | |
//@href | [href] |
//a[@href] | a[href] |
//div[@class="header"]//ul/li[last()] | div.header ul >li:last-child |
//div[@class="ush top_wrap"]//ul[@id]/li[1] | div.top_wrap ul[id]>li:first-child |
若干路径 | |
//body | //ul | body , ul |
//ul[@id="kwdTypeSelUl"] | //ul[@id="area_channel_layer_list"] | ul#kwdTypeSelUl , ul#area_channel_layer_list |
Xpath一些特殊写法
表达式 | 描述 |
---|---|
//title[@*] | 选取所有带有属性的 title 元素 |
条件表达式and、or、not | |
//div[@id="zoomer" and @style="display:none;"] | 找到id="zoomer"和style="display:none"的div元素 |
//div[@class="cresume" or @class="footer"] | 找到class="cresume"或 "footer"的div元素 |
//*[@id="showguide" and not(@class="footer")] | 找到id="showguide"且class != "footer"的任意元素 |
模糊匹配函数starts-with、contains | |
//*[starts-with(@id,"s")] | 找到id开头为 s 的任意元素 |
//*[ends-with(@id,"s")] | 找到id结尾为 s 的任意元素 |
//*[contains(text(),'注册')] | 找到标签间文本包含 注册 的任意元素 |
定位函数position | |
//*[contains(@id,"languagelist")]/li[position()=3] | 找到第三个 li |
//*[contains(@id,"languagelist")]/li[position()<=2] | 找到前两个 li |
XPath 轴地位
定位方式 | 描述 |
---|---|
ancestor | 选取当前节点的所有先辈(父、祖父等) |
ancestor-or-self | 选取当前节点的所有先辈(父、祖父等)以及当前节点本身 |
child | 选取当前节点的所有子元素【/可替代,略显多余】 |
descendant | 选取当前节点的所有后代元素(子、孙等)【//可替代,略显多余】 |
descendant-or-self | 选取当前节点的所有后代元素(子、孙等)以及当前节点本身 |
following | 选取当前节点的结束标签之后的所有节点 |
following-sibling | 选取当前节点之后的所有同级节点 |
parent | 选取当前节点的父节点【../可替代,略显多余】 |
preceding | 选取文档中当前节点的开始标签之前的所有节点 |
preceding-sibling | 选取当前节点之前的所有同级节点 |
Xpath其他方式的实际例子
其他定位方式 | 是否有等价写法? |
---|---|
//*[contains(@class,"top_wrap")]/parent::div | //*[contains(@class,"top_wrap")]/.. |
//*[contains(@class,"content")]/div/child::div | //*[contains(@class,"content")]/div/div |
//*[contains(@id,"userid")]/preceding-sibling::input | //*[contains(@id,"userid")]/../input[position()<=4] |
//*[contains(@id,"userid")]/following-sibling::div | //*[contains(@id,"userid")]/../div[position()=2] |
//*[contains(@class,"content")]/descendant::div | //*[contains(@class,"content")]//div |
Css标签定位
h1 |
`//h1 |
---|---|
div p |
`//div//p |
ul > li |
//ul/li |
ul > li > a |
//ul/li/a |
div > * |
//div/* |
:root |
/ |
:root > body |
/body |
Css属性定位
CSS | xpath |
---|---|
标签属性定位 | |
#id |
//*[@id="id"] |
.class |
//*[@class="class"] |
input[type="submit"] |
//input[@type="submit"] |
a#abc[for="xyz"] |
//a[@id="abc"][@for="xyz"] |
a[rel] |
//a[@rel] |
a[href^='/'] |
//a[starts-with(@href, '/')] |
a[href$='pdf'] |
//a[ends-with(@href, '.pdf')] |
a[href*='://'] |
//a[contains(@href, '://')] |
a[rel~='help'] |
//a[contains(@rel, 'help')] |
网友评论