替换xpath中的完整字符串

时间:2018-08-06 18:25:17

标签: xpath web-scraping

我正在寻找一种解决方案,以使用XPath函数删除在网页上获得的字符串值。

我有这个:

<div id="article_body" class="">
  This my wonderful sentence, however here the string i dont want :
  <br><br>
  <div class="typo">Found a typo in the article? <a href="typo.php" title="Typo Correction" rel="shadowbox;width=530;height=470;">Click here.</a>
  </div>
</div>

所以最后我会得到

  

这是我很棒的一句话,但是这里我不想要的字符串:

我收到

//*[@id="article_body"]

然后我尝试使用replace:

//replace('*[@id="article_body"]','Found a typo in the article? ', )

但是它不起作用,所以我认为这是因为我是XPath的新手...

我该怎么办?

1 个答案:

答案 0 :(得分:0)

似乎您正在获取所选div元素中的computed string value

  

元素节点的字符串值是元素节点按文档顺序排列的所有文本节点后代的字符串值的串联。

如果您不希望包含后代节点中的text(),而只希望text()的直接子节点div,请调整XPath:

//*[@id="article_body"]/text()

否则,您可以使用substring-before()

substring-before(//*[@id="article_body"], 'Found a typo in the article?')