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

时间:2019-09-25 12:16:06

标签: python selenium xpath web-scraping webdriverwait

我有li标签的列表,并且在每个li标签中都有一些带有强标签的文本和普通文本 // * [@@ =“ =” main“] / li [1] / strong的Xpath 我如何获取普通文本,如果我使用li标签的xpath,那么它将刮掉整个文本,有没有办法获取单独的文本

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

3 个答案:

答案 0 :(得分:0)

如果您正在使用硒,则诱导JavaScript执行程序并获取节点的lastChild

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

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

要抓取普通文本,您需要为visibility_of_element_located()引入 WebDriverWait ,并且由于所需的节点是 text节点,因此可以使用{{1} }方法以及以下Locator Strategy

  • xpath 1

    execute_script()
  • 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']]")))))