📜  在Python使用Selenium获取页面的所有文本

📅  最后修改于: 2022-05-13 01:55:32.770000             🧑  作者: Mango

在Python使用Selenium获取页面的所有文本

众所周知, Selenium是一种自动化工具,通过它我们可以通过编写一些代码行来自动化浏览器。它与所有浏览器、操作系统兼容,并且它的程序可以用任何编程语言编写,例如Python、 Java等等。

Selenium提供了一个方便的 API 来访问Selenium WebDrivers,如 Firefox、IE、Chrome、Remote 等。目前支持的Python版本为 3.5 及以上。

安装:

使用 pip 安装Selenium包。只需在命令提示符下写入以下命令即可。

pip install selenium

一旦安装完成。打开Python Console,写这两个命令来验证是否安装了Selenium 。



Python3
import selenium
  
print(selenium.__version__)


Python3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
  
driver = webdriver.Chrome(ChromeDriverManager().install())


Python3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.utils import ChromeType
  
driver = webdriver.Chrome(ChromeDriverManager(chrome_type = ChromeType.CHROMIUM).install())


Python3
from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager
  
driver = webdriver.Firefox(executable_path = GeckoDriverManager().install())


Python3
from selenium import webdriver
from webdriver_manager.microsoft import IEDriverManager
  
driver = webdriver.Ie(IEDriverManager().install())


Python3
from selenium import webdriver
from webdriver_manager.microsoft import EdgeChromiumDriverManager
  
driver = webdriver.Edge(EdgeChromiumDriverManager().install())


Python3
# Importing necessary modules
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
  
# WebDriver Chrome
driver = webdriver.Chrome(ChromeDriverManager().install())
  
# Target URL
driver.get("https://www.geeksforgeeks.org/competitive-programming-a-complete-guide/")
  
# print(driver.title)
  
# Printing the whole body text
print(driver.find_element_by_xpath("/html/body").text)
  
# Closing the driver
driver.close()


输出:

'3.141.0'

Python 的Webdriver 管理器:

以前,我们应该下载二进制 chromedriver并将其解压缩到我们 PC 上的某个位置,并设置一个路径。之后,像这样设置这个驱动程序的路径:

但是每次都会有新版本的驱动发布,所以我们需要下载一个新的驱动,否则会报错。为了解决这个问题,我们需要安装webdriver-manager

安装:

pip install webdriver-manager

如果我们使用chrome driver ,那么我们需要写这些行:

蟒蛇3



from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
  
driver = webdriver.Chrome(ChromeDriverManager().install())

像 Chrome 一样,我们也有其他一些浏览器。例如:

与铬一起使用:

蟒蛇3

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.utils import ChromeType
  
driver = webdriver.Chrome(ChromeDriverManager(chrome_type = ChromeType.CHROMIUM).install())

与火狐一起使用:

蟒蛇3

from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager
  
driver = webdriver.Firefox(executable_path = GeckoDriverManager().install())

与 IE 一起使用:

蟒蛇3

from selenium import webdriver
from webdriver_manager.microsoft import IEDriverManager
  
driver = webdriver.Ie(IEDriverManager().install())

与边缘一起使用:

蟒蛇3

from selenium import webdriver
from webdriver_manager.microsoft import EdgeChromiumDriverManager
  
driver = webdriver.Edge(EdgeChromiumDriverManager().install())

在Python使用Selenium获取页面的所有文本

让我们学习如何在Python编程中借助selenium自动执行任务。在本文中,我们正在讨论如何使用selenium获取页面的所有文本。



方法:

  1. 从selenium模块导入 webdriver
  2. 在这里,在本文中,我们将在 Chrome 浏览器上自动执行任务。所以,我们必须从 webdriver_manager.chrome 导入 ChromeDriverManager。现在,我们不需要从互联网上下载任何驱动程序。此命令将自动从 Internet 下载驱动程序。目前,支持的 WebDriver 实现有 Firefox、Chrome、IE 和 Remote。
  3. 安装 Chrome 驱动程序并存储在 webdriver 实例中。
  4. driver.get 方法将导航到由 URL 给出的页面。 WebDriver 将等待页面完全加载,然后再将控制权返回给我们的程序。
  5. WebDriver 提供了使用 find_element_by_* 方法之一在我们的页面中查找元素的各种方法。例如,可以借助 xpath 定位给定页面的正文部分,我们将使用 find_element_by_xpath 方法。
  6. 最后,用于关闭浏览器窗口。我们将使用 driver.close 方法。另一种方法,我们有 driver.exit 方法,它关闭整个浏览器,其中 driver.close 将只关闭一个窗口选项卡。

下面是实现:

蟒蛇3

# Importing necessary modules
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
  
# WebDriver Chrome
driver = webdriver.Chrome(ChromeDriverManager().install())
  
# Target URL
driver.get("https://www.geeksforgeeks.org/competitive-programming-a-complete-guide/")
  
# print(driver.title)
  
# Printing the whole body text
print(driver.find_element_by_xpath("/html/body").text)
  
# Closing the driver
driver.close()

输出: