使用dt标记对import.io进行手动xpath覆盖

时间:2015-07-02 18:17:09

标签: html xpath web-crawler import.io

在通过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

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

1 个答案:

答案 0 :(得分:0)

new Promise((resolve, reject) => 
    resolve(new Promise((resolve, reject) => 
      reject("rejectCall_2")
    ));
).catch( e1 => console.log('e1',e1));

将XXXX更改为您想要的内容

EG:如果您想知道有关“3TG:”的信息,它将会是这样的。

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

所以xPath找到任何带有TEXT“3TG:”的元素,无论标记如何,然后查看下面的兄弟(它旁边的东西)。

为了使其更具体到您的定义列表,您可以添加更多特性:

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

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