【问题标题】:extracting text with xpath with different nodes使用具有不同节点的 xpath 提取文本
【发布时间】:2018-02-21 07:27:19
【问题描述】:

我目前正在尝试使用 xPath 和 Rapidminer 从网站中提取一些文本。 我想从以下代码中提取“270€”:

<dd class="grid-item three-fifths"> 
<span class="is1-operator">+</span> 
270 € 
</dd>

我尝试了以下方法,但没有成功。

//h:dd[@class='grid-item three-fifths']//text()

感谢您的帮助:)

【问题讨论】:

    标签: xpath rapidminer


    【解决方案1】:

    您的 Xpath 返回 3 个文本节点:

    1. ""
    2. "+"
    3. "270€"

    尝试在 XPath 下仅获取 "270€"

    //h:dd[@class='grid-item three-fifths']/text()[string-length() > 0]
    

    【讨论】:

    • 嗨安德森,感谢您的回复。我试过你建议的代码,但它仍然只返回问号
    • 你试过这个解决方案了吗?或者你已经找到了自己的?
    • 嘿安德森,我尝试了你的建议,但它仍然返回一个问号。到目前为止,我没有设法解决问题
    • 我在提供的 HTML 示例中看不到问号。你能分享准确的 HTML 吗?
    • 是的,html中没有问号,这就是为什么我想知道为什么它不起作用。确切的代码是:
      + 270 €
      来自以下网站:immobilienscout24.de/expose/…
    【解决方案2】:

    如前文所述,可以使用字符串长度过滤器,但[string-length() &gt; 0] 仍然会带来 3 个节点。 'enter' 和 '+' 文本内容都有一个字符。

    [string-length() &gt; 1] 应该可以工作。

    如果您确定项目位置(在这种情况下是第三个位置)

    //dd[@class='grid-item three-fifths']//text()[3]
    

    如果您确定它始终是最后一项:

    //dd[@class='grid-item three-fifths']/text()[last()]
    

    可以在dd中span后获取文本节点:

    //dd[@class='grid-item three-fifths']//span/following-sibling::text()
    

    寻找欧元符号:

    //dd/text()[contains(.,'€')]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      相关资源
      最近更新 更多