迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

在 Python 中使用 Selenium 查找元素

作者:迹忆客 最近更新:2023/07/02 浏览次数:

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')

让我们理解上面的代码。

  1. 我们首先导入 webdriver 类来创建自动化浏览器。 在我们的例子中,我们将使用 Google Chrome 浏览器的 chromedriver.exe。
  2. 我们使用 get() 函数检索希望从中获取元素的网站。
  3. 为了获取元素列表,我们使用 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() 函数,我们可以使用链接文本检索元素。

请参阅下面的代码。

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')

此功能与上一个功能类似。 不同之处在于它返回与链接的部分文本匹配的元素。

例如,

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。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:Python

Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。

Pandas 追加数据到 CSV 中

发布时间:2024/04/24 浏览次数:352 分类:Python

本教程演示了如何在追加模式下使用 to_csv()向现有的 CSV 文件添加数据。

Pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:Python

本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。

Pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:Python

本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便