【问题标题】:Selenium Python XPath, how to extract only the text in the DIV and not the text in internal spansSelenium Python XPath,如何仅提取DIV中的文本而不是内部跨度中的文本
【发布时间】:2021-10-16 05:33:19
【问题描述】:

这里是 HTML:

<div class="discount-promo" style="" xpath="1">-50%<span class="text">2a Unidad</span></div>

我从 span 中提取 OK 文本:

s = root.find_element_by_xpath('.//div[@class="discount-promo"]//span[@class="text"]')
s.text
'2a Unidad'

但对于 div 内的文本:

d = root.find_element_by_xpath('.//div[@class="discount-promo"]')
d.text
'-50%\n2a Unidad'

对于这种情况,我需要准确地提取“-50%”或任何其他值,而不必使用正则表达式,只需通过 XPath。

问候

【问题讨论】:

    标签: python selenium xpath


    【解决方案1】:

    您可以使用这个 XPath-1.0 表达式:

    .//div[@class="discount-promo"]/text()[1]
    

    或者,总的来说:

    d = root.find_element_by_xpath('.//div[@class="discount-promo"]/text()[1]')
    

    输出应该符合预期。

    【讨论】:

    • 嗨,它抛出了以下错误:WebDriverException: Message: TypeError: node.ownerDocument is null
    【解决方案2】:

    这个短代码应该只给你父元素文本:

    parent_element = root.find_element_by_xpath('.//div[@class="discount-promo"]')
    print(driver.execute_script('return arguments[0].firstChild.textContent;', parent_element).strip())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 2021-10-21
      • 2015-01-03
      相关资源
      最近更新 更多