我的xpath是:/html/body/div/table/tbody/tr[2]/td[4]
我需要在jsoup选择器中使用CSS。
我找到了xpath和css之间的比较:here,并且在他们的示例(Second <E> element anywhere on page
)中说我不能这样做。 Xpath xpath=(//E)[2]
CSS N\A
。
也许我找不到我要找的东西。有什么想法吗?
这是我要解析的html(我需要获取值:1
和3
):
<div class=tablecont>
<table width=100%>
<tr>
<td class=header align=center>Panel Color</td>
<td class=header align=center>Locked</td>
<td class=header align=center>Unqualified</td>
<td class=header align=center>Qualified</td>
<td class=header align=center>Finished</td>
<td class=header align=center>TOTAL</td>
</tr>
<tr>
<td align=center>
<div class=packagecode>ONE</div>
<div>
<div class=packagecolor style=background-color:#FC0;></div>
</div>
</td>
<td align=center>0</td>
<td align=center>0</td>
<td align=center>1</td>
<td align=center>12</td>
<td align=center class=rowhead>53</td>
</tr>
<tr>
<td align=center>
<div class=packagecode>two</div>
<div>
<div class=packagecolor style=background-color:#C3F;></div>
</div>
</td>
<td align=center>0</td>
<td align=center>0</td>
<td align=center>3</td>
<td align=center>42</td>
<td align=center class=rowhead>26</td>
</tr>
</table>
</div>
答案 0 :(得分:11)
虽然(//E)[2]
之类的表达式无法用CSS选择器表示,但可以使用E[2]
伪类来模拟像:nth-of-type()
这样的表达式:
html > body > div > table > tbody > tr:nth-of-type(2) > td:nth-of-type(4)
答案 1 :(得分:9)
对我有用。
//Author: Oleksandr Knyga
function xPathToCss(xpath) {
return xpath
.replace(/\[(\d+?)\]/g, function(s,m1){ return '['+(m1-1)+']'; })
.replace(/\/{2}/g, '')
.replace(/\/+/g, ' > ')
.replace(/@/g, '')
.replace(/\[(\d+)\]/g, ':eq($1)')
.replace(/^\s+/, '');
}
答案 2 :(得分:0)
你在寻找这样的东西:
.tablecont tr:nth-child(2) td:nth-child(4) {background-color: yellow; }
.tablecont tr:nth-child(3) td:nth-child(4) {background-color: yellow; }
答案 3 :(得分:-1)
应该学习如何编写css选择器,但是要快速修复,请尝试:cssify
例如,我放入您的xpath并吐出:html > body > div > table > tbody > tr:nth-of-type(2) > td:nth-of-type(4)
尝试一下。