如何使用 Selenium 通过文本查找元素
有关如何使用 Selenium 通过文本查找元素的分步指南。
重要提示:我们将在本教程中使用真实示例,因此你需要 硒 图书馆和 浏览器驱动程序 安装。
步骤 1。 写下你的第一个 Selenium 脚本.
注意: 我们将使用 Python
以及 Chrome WebDriver。 你可以添加 Chrome 网络驱动程序 至 这个 途径.
步骤 2。 现在你需要导入 By 选择器模块。
from selenium.webdriver.common.by import By
//*[contains (text(),'stock')]
它会查找页面中的任何元素,其文本包含 库存 字符串。
element_by_text = driver.find_element(By.XPATH, "//*[contains (text(),'stock')]").text
print (element_by_text)
注意: 我们正在使用 驱动程序.find_element() 函数仅获取选择器找到的第一个元素。也可以使用 驱动程序.find_elements() 函数获取所有元素的列表。
这是 脚本的输出。它显示您刚刚抓取的元素。
步骤 5。 现在我们可以从文本中提取数字来清理结果,并将其作为整数变量进行其他操作。您可以使用一些简单的正则表达式来做到这一点。
在这里我们找到 元素按文本 字符串,将其分配给一个新变量并单独打印出来:
in_stock = re.findall(r'\d+', element_by_text)[0]
print (f'In stock: {in_stock}')
这是 脚本的输出。它显示您刚刚抓取的书籍的库存情况。
结果:
恭喜,您刚刚使用 Selenium 提取了一本书的库存情况。
from selenium import webdriver
from selenium.webdriver.common.by import By
import re
driver = webdriver.Chrome()
driver.get("http://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html")
element_by_text = driver.find_element(By.XPATH, "//*[contains (text(),'stock')]").text
driver.quit()
print (element_by_text)
in_stock = re.findall(r'\d+', element_by_text)[0]
print (f'In stock: {in_stock}')