繁体   English   中英

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

[英]How do I scrape text within strong tag and normal text

我有 li 标签列表,在每个 li 标签中都有一些带有强标签的文本和普通文本 Xpath for //*[@id="main"]/li[1]/strong 如果我接受,我如何获得普通文本xpath 的 li 标签然后它会刮掉整个文本,有没有办法获得单独的文本

<li>
<strong>Heading</strong>
: Sample paragraph to get the text from here.
</li>

如果使用的是 selenium JavaScript Executor 并获取节点的lastChild

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

您可以获取<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, '')

要抓取普通文本,您需要为visibility_of_element_located()引入WebDriverWait ,并且由于所需的节点是文本节点,您可以使用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']/..")))))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM