【问题标题】:How to get text that has no node and attribute using xpath如何使用xpath获取没有节点和属性的文本
【发布时间】:2023-01-10 15:27:29
【问题描述】:

我正在尝试使用 xpath 获取 HTML 中的特定文本。

HTML 如下所示,如您所见,

我想要获取的“目标文本”在节点 p 中。

但是“目标文本”没有它的节点或属性,

它只是单独出现在节点 p 中。

我怎样才能得到这个?

<p class="mean" lang="ko">
    <span class="word_class ">non-target text1 </span>
    <span class="mark">non-target text2 </span>
    target text 
</p>

【问题讨论】:

    标签: xpath


    【解决方案1】:

    target text 属于父节点 p
    你需要在这里做的是:
    获取父元素文本(会包含父元素文本内容和子元素文本内容)。
    然后移除子元素文本内容。
    如果这是使用 Selenium 完成的,则代码可以如下所示:

    parent_text = ""
    all_text = driver.find_element(By.XPATH, ("//p[@class='mean']")).text
    child_elements = driver.find_elements(By.XPATH, ("//*[@class='parent']//*"))
    for child_element in child_elements:
        parent_text = all_text.replace(child_element.text, '')
    print(parent_text)
    

    【讨论】:

      【解决方案2】:

      使用 //p[@class = 'mean' and @lang = 'ko']/text()[normalize-space()] 选择该 p 元素的任何包含多于空格的文本节点子元素。请注意,文本节点内容在结束 &lt;/span&gt; 之后开始并在结束 &lt;/p&gt; 之前结束,因此其内容为例如

      target text
      

      如果你想删除前导和尾随空格,你可以使用例如normalize-space(//p[@class = 'mean' and @lang = 'ko']/text()[normalize-space()])

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-22
        • 2011-11-20
        • 1970-01-01
        相关资源
        最近更新 更多