4

在浏览了 import.io 的培训博客和 W3schools 之后,编写 xpath 覆盖对我来说仍然是一个难题。我正在尝试从信息并不总是在完全相同的位置的站点中提取属性值,所以我知道我需要编写一个 xpath 覆盖。HTML 是:

<dt>3TG:</dt> 
<dd>Does not contain 3TG</dd>
<dt>Contract Catalog Item:</dt>
<dd>Y</dd> 
<dt>Diameter:</dt>
<dd>3/8"</dd>
<dt>Diameter-Thread Size:</dt>
<dd>3/8"-16</dd>
<dt>Finish:</dt>
<dd>Zinc</dd>
<dt>Grade:</dt>
<dd>5</dd>
<dt>Length:</dt>
<dd>1"</dd>
<dt>Material:</dt>
<dd>Steel</dd>

xpath是

//*[@id="main"]/div[1]/div[4]/div/div[1]/div[1]/dl/dt[4]

我努力了

//*[@id="main"]/div[1]/div[4]/div/div[1]/div[1]/dl/dt[contains(text(), "Finish")]/following-sibling::dt/text()

//*[@id="main"]/div[1]/div[4]/div/div[1]/div[1]/dl/td/dd[.="Finish:"]/following::dd

但没有运气。我不确定它是跟随还是跟随兄弟姐妹。任何帮助将非常感激。

4

1 回答 1

0
//*[text()="XXXX"]/following-sibling::*

把 XXXX 改成你想要的东西

EG:如果你想知道关于“3TG:”的信息,它看起来像这样。

//*[text()="3TG:"]/following-sibling::*

<dt>3TG:</dt> 
<dd>Does not contain 3TG</dd>

因此,xPath 会找到任何带有 TEXT“3TG:”的元素,而不管标签是什么,然后查看下面的同级元素(它旁边的东西)。

要使其更具体到您的定义列表,您可以添加更多具体性,如下所示:

//dt[text()="3TG:"]/following-sibling::dd

<dt>3TG:</dt> 
<dd>Does not contain 3TG</dd>
于 2015-07-09T16:06:06.573 回答