为了账号安全,请及时绑定邮箱和手机立即绑定

如何在强标签和普通文本中抓取文本

如何在强标签和普通文本中抓取文本

慕运维8079593 2022-06-07 17:12:07
我有 li 标签列表,并且在每个 li 标签中都有一些带有强标签的文本和用于 //*[@id="main"]/li[1]/strong 的普通文本 Xpath 我如何获得普通文本,如果我采取li标签的xpath然后它会刮掉整个文本,有没有办法获得单独的文本<li><strong>Heading</strong>: Sample paragraph to get the text from here.</li>
查看完整描述

3 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

您可以获取<li>文本并从中删除<strong>文本


element = driver.find_element_by_xpath('//*[@id="main"]/li[1]')

all_text = element.text

element = element.find_element_by_xpath('./strong')

text = all_text.replace(element.text, '')


查看完整回答
反对 回复 2022-06-07
?
SMILET

TA贡献1796条经验 获得超4个赞

如果您使用的是 selenium Induce JavaScriptExecutor 并获取lastChild节点的。

print(driver.execute_script('return arguments[0].lastChild.textContent;', driver.find_element_by_xpath('//*[@id="main"]/li[1]')))


查看完整回答
反对 回复 2022-06-07
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

要抓取正常文本,您需要诱导WebDriverWait并且由于所需visibility_of_element_located()的节点是文本节点,您可以使用execute_script()方法以及以下定位器策略

  • xpath 1

    print(driver.execute_script('return arguments[0].lastChild.textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//li[./strong[text()='Heading']]")))))
  • xpath 2

    print(driver.execute_script('return arguments[0].lastChild.textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//li/strong[text()='Heading']/..")))))



查看完整回答
反对 回复 2022-06-07
  • 3 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信