使用XPath获取带有span的段落的完整文本

问题描述 投票:0回答:1
<ul>
  <li class="xyz">
    <div class="divClass">
      <span class="ContentItem---status---dL0iS">
        <span>Success</span>
      </span>
      <p class="ContentItem---title---37IqA">
        <span>Test Check</span>
        : Please display the text
      </p>
    </div>
  </li>
  <li class="xyz">
    <div class="divClass">
      <span class="ContentItem---status---dL0iS">
    <span>Not COMPLETED</span>
      </span>
      <p class="ContentItem---title---37IqA">
        <span>Knowledge</span> A Team
      </p>
    </div>
  </li>
  .... and so on
</ul>

这是我的html结构。我在段落标记内的Span和Test Check中有这个文本: Please display the text。我需要的是,我需要确定我的结构是否包含这个完整的文本或Test Check: Please display the text

我尝试了多种方法,无法确定完整的路径。请找到我尝试的方式//span[text()='Test Check']/p[text()=': Please display the text']你能为我提供xpath吗?

xpath
1个回答
0
投票

我认为有一种可能的解决方案可以在给定的html文本中进行识别和检索。我希望这能解决你的问题。

def get_tag_if_present(html_text):
    soup_obj = BeautifulSoup(html_text,"html.parser")
    test_check = soup_obj.find_all(text = re.compile(r"Test Check"))
    result_val = "NOT FOUND"
    if test_check:
        for each_value in test_check:
            parent_tag_span = each_value.parent
            if parent_tag_span.name == "span":
                parent_p_tag = parent_tag_span.parent
                if parent_p_tag.name == "p" and "Please display the text" in parent_p_tag.get_text():
                    result_val = parent_p_tag
                    break
    return result_val

返回的result_val将具有与带有参数的p标记元素对应的标记。如果不存在这样的元素,它将返回NOT FOUND。我假设相应的数据条目分别存在于“p”标签和“span”标签中,并随意删除给定html文本中文本的所有标识的所述条件。

© www.soinside.com 2019 - 2024. All rights reserved.