【问题标题】:Getting text in paragraph by searching for text in bold tag通过搜索粗体标签中的文本来获取段落中的文本
【发布时间】:2021-09-13 21:57:06
【问题描述】:
我正在尝试从段落中获取文本,我目前正在使用 driver.find_element_by_xpath("//*[contains(text(), 'Definition')]").text
但是,问题是html格式如下:
<p>
<b> Definition: </b>
"text that i also need to get"
</p>
目前,我的代码仅获取粗体标记中的文本。有没有办法使用粗体标签中的文本来搜索整个段落?我需要查看的部分中没有 id 或类,因此我无法通过这些进行搜索。
【问题讨论】:
标签:
python
html
selenium
selenium-webdriver
web-scraping
【解决方案1】:
返回什么?我不熟悉这个库,但如果返回标签和内部文本,那么您可能会将字符串定义为<b> Definition: </b>。然后用同样的方法获取外层<p>元素。
【解决方案2】:
假设您已经定义了 bold_tag 元素(不是文本值,而是您自己感兴趣的特定元素),您可以试试这个:
p_tag = bold_tag.find_element_by_xpath("./..") # go up a level to <p> parent
print(p_tag.text)
编辑:我重新阅读了您的 OP,看起来您确实定义了它,所以完整的代码如下所示:
bold_tag = driver.find_element_by_xpath("//b[contains(text(), 'Definition:']")
p_tag = bold_tag.find_element_by_xpath("./..") # go up a level to <p> parent
print(p_tag.text)
【解决方案3】:
xPathResult = document.evaluate('//b[text()=" Definition: "]/parent::p', document);
if (xPathResult) {
p_tag_parent = xPathResult.iterateNext();
console.log(p_tag_parent.innerText);
}
<p>
<b> Definition: </b> "text that i also need to get"
</p>
您可以搜索具有定义的元素:然后获取父元素是 p。
p_tag_parent_text = driver.find_element_by_xpath('//b[text()=" Definition: "]/parent::p').text;