使用XPath获取带有span的段落的完整文本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用XPath获取带有span的段落的完整文本相关的知识,希望对你有一定的参考价值。
<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吗?
答案
我认为有一种可能的解决方案可以在给定的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文本中文本的所有标识的所述条件。
以上是关于使用XPath获取带有span的段落的完整文本的主要内容,如果未能解决你的问题,请参考以下文章
如何用bs或者xpath获取指定标签下的某一标签的所有文本?