我们使用联盟链接。它们让我们能够维持运营,而您无需承担任何费用。

如何使用 Selenium 通过文本查找元素

有关如何使用 Selenium 通过文本查找元素的分步指南。

重要提示:本教程将使用真实案例,因此您需要安装Selenium库和浏览器驱动程序。

步骤 1。 写下你的第一个 Selenium 脚本. 注意: 我们将使用 Python  和 Chrome WebDriver。 你可以添加 Chrome 网络驱动程序 至 这个 途径. 步骤 2。 现在你需要导入 By 选择器模块。
				
					from selenium.webdriver.common.by import By
				
			
TIPS: 定位元素。 步骤 3。让我们尝试查找一本书的库存情况。我们将使用 books.toscrape.com 本例中的网站。现在,检查页面源代码。您可以在同一个元素中找到单词和可用书籍的数量:
selenium 通过文本查找元素
注意: 我们将使用 XPath的 选择器来定位元素,因为它有一个 文本() 方法内置。 TIP: 如果你需要复习一下,可以看看 XPath 备忘单.  步骤 4。 然后使用这个选择器:
				
					//*[contains (text(),'stock')]
				
			

它会在页面中查找文本包含特定字符串的任何元素。

				
					element_by_text = driver.find_element(By.XPATH, "//*[contains (text(),'stock')]").text

print (element_by_text)
				
			

注意:我们使用driver.find_element()函数只是为了获取选择器找到的第一个元素。也可以使用driver.find_elements()函数来获取所有元素的列表。

这是脚本的输出结果,显示了您刚刚抓取的元素。

2 selenium_find_element_by_text_output

步骤 5.现在我们可以清理结果,从文本中提取数字,并将其作为整数变量进行其他操作。您可以使用一些简单的正则表达式来实现这一点。

在这里,我们找到element_by_text字符串中的十进制数,将其赋值给一个新变量,并单独打印出来:

				
					in_stock = re.findall(r'\d+', element_by_text)[0]

print (f'In stock: {in_stock}')
				
			

这是脚本的输出结果。它显示了您刚刚抓取的书籍的库存情况。

selenium 根据文本输出查找元素2

结果: 

恭喜,您刚刚使用 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}')
				
			

无需任何方块即可刮削。

Web 抓取 API 研究缩略图