首页 > 解决方案 > 使用文本 selenium beautifulsoup python 获取标签

问题描述

我知道有一种使用 xpath 和 javascript 的方法

    element = browser.find_element_by_xpath("//*[contains(text(),'text')]")

但是这种方法不检测元素/标签,它们被定义为标签,例如:

    <p>
      <span class="text-primary">UK</span>
      +44 (0) 1865 987 667<br>
      Piccadilly Gardens, 49 Piccadilly, Manchester, M1 2AP </p>

在这种情况下,如果文本是+44 (0) 1865 987,它不会得到元素。

  1. 这个问题在许多示例中重复出现,以这种方式包含文本。可能是什么原因?
  2. 有没有办法在beautifulsoup中获取标签,使用文本搜索?

标签: pythonseleniumselenium-webdriverbeautifulsoup

解决方案


我的期望是您需要使用以下功能组合:

  1. normalize-space() - 在子项中查找匹配项/忽略前导/尾随空格等。
  2. contains() - 用于部分匹配

把所有东西放在一起:

element = driver.find_element_by_xpath("//*[contains(normalize-space(),'+44 (0) 1865 987 667')]")

演示:

在此处输入图像描述

更多信息:XPath 运算符和函数


推荐阅读