在 Python 中使用 Selenium 查找元素
Python 中的 selenium 包用于通过 Web 浏览器实现自动化; 它与几乎所有主要浏览器兼容。 我们可以用 Python 编写脚本,在浏览器上自动执行一些任务。
本篇文章将介绍在 Python 中使用 selenium 查找网页中元素的不同方法。
在 Python 中使用 Selenium 查找元素
元素是网页的基本构造,用于定义其结构。 我们可以利用硒的不同功能来查找元素。
这些函数用于查找使用不同属性(如名称、xpath、id 等)的元素。 我们将使用这些方法从下面的 HTML 文档中检索元素。
<html>
<body>
<p class="content">Some text</p>
<a href="link.html"> Link_text </a>
<form id="some_form">
<input name="email" type="text" />
<input name="pass" type="password" />
</form>
</body>
</html>
请注意
,如果在任何情况下都没有匹配项,则会引发NoSuchElementException
异常。 它们都会返回找到匹配项的元素列表。
下面讨论这些方法。
使用 find_elements_by_name() 函数在 Python 中使用 Selenium 查找元素
网页上的不同元素都分配有名称属性。 我们可以使用 find_elements_by_name() 函数来检索与 name 属性值匹配的元素列表。
请参阅下面的代码。
from selenium import webdriver
driver = webdriver.Chrome(r'C:/path/to/chromedriver.exe')
driver.get("https://www.sample.org/")
e = driver.find_element_by_name('email')
让我们理解上面的代码。
- 我们首先导入 webdriver 类来创建自动化浏览器。 在我们的例子中,我们将使用 Google Chrome 浏览器的 chromedriver.exe。
-
我们使用
get()
函数检索希望从中获取元素的网站。 -
为了获取元素列表,我们使用
find_element_by_name()
函数并在函数内指定 name 属性的值。
请注意
,对于下面讨论的每种方法,代码将保持相同。 只有检索元素的函数(在本例中为find_element_by_name()
)会发生变化。
在 Python 中使用 find_elements_by_id() 函数通过 Selenium 查找元素
id 属性还可以返回在网页上找到的元素列表。 为此,我们可以使用 find_elements_by_id() 函数。
例如,
from selenium import webdriver
driver = webdriver.Chrome(r'C:/path/to/chromedriver.exe')
driver.get("https://www.sample.org/")
e = driver.find_element_by_id('some_form')
使用 find_elements_by_xpath() 函数在 Python 中使用 Selenium 查找元素
我们可以使用 xpath 的路径表达式从文档中检索节点。 要使用 xpath 查找元素,我们可以使用 find_elements_by_xpath() 函数。
路径表达式在函数中指定。
例如,
from selenium import webdriver
driver = webdriver.Chrome(r'C:/path/to/chromedriver.exe')
driver.get("https://www.sample.org/")
e = driver.find_element_by_xpath("/html/body/form[1]")
使用 find_elements_by_link_text() 函数在 Python 中使用 Selenium 查找元素
我们在文档中包含可以重定向到其他网页的元素。 这是通过使用锚标签来实现的。
使用 find_elements_by_link_text()
函数,我们可以使用链接文本检索元素。
请参阅下面的代码。
from selenium import webdriver
driver = webdriver.Chrome(r'C:/path/to/chromedriver.exe')
driver.get("https://www.sample.org/")
e = driver.find_element_by_link_text('Link_text')
使用 find_elements_by_partial_link_text() 函数在 Python 中使用 Selenium 查找元素
此功能与上一个功能类似。 不同之处在于它返回与链接的部分文本匹配的元素。
例如,
from selenium import webdriver
driver = webdriver.Chrome(r'C:/path/to/chromedriver.exe')
driver.get("https://www.sample.org/")
e = driver.find_element_by_partial_link_text('Link_')
在上面的示例中,我们可以观察到我们能够仅使用部分链接文本来检索元素。
使用 find_elements_by_tag_name() 函数在 Python 中使用 Selenium 查找元素
HTML 文档中的每个元素都有一个标签名称。 要使用标签名称查找元素,我们可以使用 Python 中的 find_element_by_tag_name()
。
请参阅下面的代码。
from selenium import webdriver
driver = webdriver.Chrome(r'C:/path/to/chromedriver.exe')
driver.get("https://www.sample.org/")
e = driver.find_element_by_tag_name('form')
使用 find_elements_by_class_name() 函数在 Python 中使用 Selenium 查找元素
我们可以使用 find_elements_by_class_name()
函数来检索与网页上给定类属性匹配的元素。
请参阅下面的代码。
from selenium import webdriver
driver = webdriver.Chrome(r'C:/path/to/chromedriver.exe')
driver.get("https://www.sample.org/")
e = driver.find_element_by_class_name('content')
使用 find_elements_by_css_selector() 函数在 Python 中使用 Selenium 查找元素
我们可以使用 CSS 选择器语法来设置 HTML 元素的样式。 CSS 选择器语法也可用于通过 find_elements_by_css_selector()
函数查找元素。
请参阅以下示例。
from selenium import webdriver
driver = webdriver.Chrome(r'C:/path/to/chromedriver.exe')
driver.get("https://www.sample.org/")
e = driver.find_element_by_css_selector('p.content')
使用 find_elements() 函数在 Python 中使用 Selenium 查找元素
find_elements()
函数是一个私有方法,可以从 HTML 文档中检索元素。 它就像前面讨论的所有方法的顶峰。
我们可以使用前面所有的属性作为参数来查找元素。
例如,
from selenium.webdriver.common.by import By
from selenium import webdriver
driver = webdriver.Chrome(r'C:/path/to/chromedriver.exe')
driver.get("https://www.sample.org/")
e = driver.find_elements(By.NAME, 'email')
上面的示例将像之前一样使用 name 属性查找元素。
总结
我们已经讨论了在 Python 中使用 selenium 根据不同属性查找元素的不同方法。 每个属性都有其功能。
我们还可以使用私有方法 find_elements 并提供不同的属性作为参数。 另一件需要注意的事情是,本文中的方法返回所有可能匹配的元素列表。
如果我们只需要找到一个元素,我们可以在每个讨论的函数中用 elements 替换 element 。 例如,find_elements 变为 find_element。
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串