Python中的无头Chrome

2025年1月5日 | 阅读 5 分钟

数字领域的飞速发展催生了用于数据提取、测试和 Web 开发的现代工具。无头 Chrome 就是这样一种改变了浏览体验和开发人员自动化工作流程的现代工具。

在本通讯中,我们将深入探讨无头 Chrome 的世界,并了解其功能、优势、Python 实现等等。

无头 Chrome 简介

无头 Chrome 因其无需图形用户界面即可作为 Web 浏览器运行的能力而日益受到开发人员的欢迎。它消除了对可见浏览器窗口的需求,并允许以编程方式与网页进行用户交互,从而使数据抓取、测试和自动化操作更容易完成。除了简化导航、修改和提取网页数据之外,无头 Chrome 还为开发人员提供了更快、更高效的浏览体验。无头 Chrome 不仅受到开发人员和企业的欢迎,而且具有极高的可扩展性和跨平台兼容性。

无头 Chrome 是广为人知的 Google Chrome Web 浏览器的修改版本。它与标准版的主要区别在于它没有图形用户界面,这使其非常适合需要后台不间断运行的自动化任务。无头 Chrome,对于自动化爱好者和开发人员来说都是一个重要的工具,它缺少用户界面,但提供了与标准 Chrome 浏览器相同的强大渲染和 JavaScript 功能。无论您需要运行测试、抓取数据还是自动化重复性任务,无头 Chrome 都是一个绝佳的选择,可以极大地提高您的生产力和效率。

为什么要使用无头 Chrome?

无头 Chrome 使用各种框架进行自动化。一个流行且重要的 Python 框架称为 Selenium。此自动化框架包含一系列工具和功能。它可以很好地跨各种浏览器运行,并用于跨浏览器测试。

在现代 Web 开发中,Web 应用程序的测试和调试在很大程度上取决于多种浏览器的使用。开发人员经常使用浏览器自动化工具来自动化这些任务。无头 Chrome 就是这样一种工具,它是著名 Chrome 浏览器的一个无图形用户界面的版本。使用无头 Chrome 的主要优点是其对系统资源(如 CPU 和内存)的使用量较低。它没有图形用户界面 (GUI),但仍然可以打开多个进程来与网页交互并渲染 JavaScript 文件。因此,对于希望在消耗最少系统资源的情况下自动化调试和测试过程的开发人员来说,它是理想的选择。

Selenium 成为无头 Chrome 的最佳自动化工具的原因是,与其他框架(如 requests)不同,requests 不支持渲染 JavaScript 文件,只能从中打开原始 HTML 数据,这不足以进行 Web 抓取。但是,大多数网页都使用 JavaScript,而 Selenium 可以轻松有效地抓取这些网页。无头 Chrome 是一种更快的自动化方法,可以帮助实现流畅、快速的 Web 抓取。它在后台运行,因为它没有界面,因此可以同时处理多个任务。

在 Python 中构建无头 Chrome

正如前面提到的,我们可以使用 Python Selenium 框架来构建无头 Chrome,因此我们需要首先对其进行深入了解。

支持它的编程语言列表包括 Python、Ruby、Java、JavaScript、NodeJS、PHP、C#、Perl 等等。它还支持许多浏览器,包括 Chrome、Edge、Firefox、Safari 等。

在继续在 Python 中创建无头 Chrome 之前,我们需要在 Python 中安装 Selenium 框架。

pip install selenium

我们已经安装了 selenium,现在我们将检查无头 Chrome 所需的库或先决条件。

  • Chrome:我们将用于创建无头 Chrome 的基本必需浏览器是 Chrome 浏览器。如果尚未下载,可以从其网站安装。
  • Python:无头 Chrome 需要 Python 3 或更高版本。
  • WebDriver:Web 抓取需要驱动程序,因此我们需要将其添加到我们的无头 Chrome 中。Selenium 4 或更高版本提供内置驱动程序,我们无需单独安装。我们只需使用 import 语句导入即可。

现在,我们将实现无头 Chrome 并使用 Selenium 自动化我们的浏览器。

代码

输出

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

chrome_options = Options()
chrome_options.add_argument("--headless")

driver = webdriver.Chrome(options=chrome_options)

driver.get("https://tpointtech.cn/")
print("Title of the website is: ", driver.title) 
 
obj = driver.find_elements(By.XPATH, '//*[@id="link"]/div/ul/li[2]/a')
print(obj)

print('The searched element is: ')
for objs in obj:
    print(objs.text)

obj1 = driver.find_elements(By.XPATH, '//*[@id="link"]')
print(obj1)

print('List of Topics on the Home Page: ')
for ob in obj1:
    print(ob.text)

driver.quit()

在此代码中,我们借助 Selenium 创建了一个无头 Chrome。我们导入了必要的库,包括 Selenium 和 web drivers。创建了一个对象,该对象具有 options() 函数,用于修改搜索。然后,我们为无头 Chrome 添加了一个参数,然后创建了一个 driver 对象。借助 get() 函数,我们导航到了一个 URL。driver.title() 函数用于获取网站的标题。然后,使用 find_elements() 函数,我们使用其 XPATH 搜索了一些对象和元素,包括页面头部内容等。

作为输出,此代码会返回一个人类无法阅读的命令,以显示无头 Chrome 的成功运行,以及我们导航所需的必要输出。

我们知道无头 Chrome 没有 GUI;因此,它会在控制台中输出,而不会像任何自动化浏览器那样实际打开 Web 浏览器。

无头 Chrome 的缺点

无头 Chrome 是一种流行的 Web 浏览器自动化工具,因其无需可见用户界面即可执行 Web 抓取和测试等任务而闻名。然而,除了其诸多优势之外,该工具还存在一些挑战和缺点。在处理动态数据时,其主要缺点之一是效率低下。无头 Chrome 难以跟上这种不断变化的数据。因此,与其他自动化浏览器相比,它可能需要更长的时间来处理信息,并且在检索准确数据方面可能不如其他浏览器成功。