如何在Selenium中用XPath获取无独立节点/属性的文本
解决方法
- 由于不能使用
text()方法,你可以通过先定位节点再做文本处理的方式提取目标内容:- 先获取
<p>节点的完整文本:p_element = driver.find_element(By.XPATH, "//p[@class='mean' and @lang='ko']") full_text = p_element.text - 提取两个
<span>标签内的文本并从完整文本中剔除:- 获取两个span的文本内容:
span1_text = driver.find_element(By.XPATH, "//p[@class='mean' and @lang='ko']/span[@class='word_class ']").text span2_text = driver.find_element(By.XPATH, "//p[@class='mean' and @lang='ko']/span[@class='mark']").text - 清理得到目标文本:
target_text = full_text.replace(span1_text, "").replace(span2_text, "").strip()
- 获取两个span的文本内容:
- 先获取
- 另一种方案:利用XPath的
string()函数获取节点完整字符串后处理:full_string = driver.execute_script("return document.evaluate('string(//p[@class=\"mean\" and @lang=\"ko\"]) ', document, null, XPathResult.STRING_TYPE, null).stringValue;") target_text = full_string.replace(span1_text, "").replace(span2_text, "").strip()
注:因为无法直接通过XPath筛选独立文本节点,只能先获取完整文本再做字符串剔除,这样就能精准提取出不属于任何子span的目标内容。
内容的提问来源于stack exchange,提问作者rapping_overFlow
相关产品推荐
相关产品推荐

