in

什么是无头浏览器? (最佳新手指南2022)

什么是无头浏览器

无头 Web 浏览器可帮助开发人员使用自动化脚本快速测试应用程序和网站。但他们也在网络抓取中发挥作用,而且每年都变得越来越重要。本文将教您什么是无头浏览器,它如何允许抓取复杂的网站,以及哪种无头浏览器最适合您的项目。

什么是无头浏览器?

无头浏览器是没有用户界面的网络浏览器。基本上,它与我们通常使用的 Chrome 或 Firefox 相同,我们可以点击或触摸剥离:没有标签栏、URL 栏、书签或任何其他用于视觉交互的元素。

相反,这样的浏览器希望您以编程方式与它进行交互,也就是说,通过编写脚本来说明它应该如何操作。以这种方式与内容交互并不会影响功能:您仍然可以模拟单击、滚动、下载并执行您通常可以使用鼠标执行的所有相同操作。

为什么要打扰,你可能会问。无头浏览器可以方便地执行重复性任务,例如软件测试和网页抓取。无论如何,这些都是您想要自动化的任务。并且不必加载不必要的视觉元素可以节省大量资源。


无头浏览器有什么用途?

无头浏览器用于通过用户的眼睛模拟与网站或应用程序的交互。为此,他们主要依赖 JavaScript 元素,如今这些元素几乎可以完全控制网站。

  • Web 测试——也许无头浏览器的主要用例是测试基于 Web 的站点和应用程序。您可以将其配置为单击链接和各种元素、在字段中输入数据、填写表格、模拟负载,甚至完成完整的工作流程。这有助于开发人员查看网站是否存在手动测试或其他工具可能遗漏的任何错误或可用性问题。
  • 网页抓取——随着JavaScript 的流行,使用常规 HTML 提取工具抓取一些网站变得非常困难。其中一些问题包括异步加载、无限滚动和浏览器指纹识别。通过完全渲染网站并模拟真实的浏览器,无头浏览器允许网络爬虫从最具挑战性的目标中提取数据。

无头浏览器如何帮助 Web 抓取

当谈到网络抓取时,无头浏览器对于项目的成功要么无关紧要,要么至关重要。这一切都取决于您所追求的网站。

如果该网站不依赖 JavaScript 元素来显示内容,或者如果它不使用基于 JS 的跟踪方法来阻止网络爬虫,那么您将不需要无头浏览器。在这种情况下,像 Requests 和 Beautiful Soup 这样的常规 Web 抓取应用程序或库会更快、更简单地完成这项工作。

但是,如果您正在处理动态 AJAX 页面或嵌套在 JavaScript 元素中的数据,那么无头浏览器将是您提取所需信息的最佳选择。这是因为您需要像真实用户一样呈现整个页面,而常规的 HTML 抓取工具不包含此类功能。

无头浏览器的另一个重要用途是克服浏览器指纹。这是一种全新的蠕虫病毒,涉及屏幕分辨率、时区、IP 地址、JavaScript 配置等参数。复杂的网站使用指纹来跟踪其用户并阻止网络抓取机器人。使用无头浏览器,您的抓取工具可以模拟真实设备的指纹。


为任务选择最佳的无头浏览器库

如果您决定尝试使用无头浏览器进行网页抓取,您可以选择多种选项。以下是一些主要的:

在 Selenium 中运行任何无头浏览器

Selenium 是一个开源自动化工具。它的主要目的是执行自动化测试,但 Selenium 也可用于网页抓取。该工具允许使用多种编程语言(包括 Python、Java、Ruby 和 C#)为所有主要 Web 浏览器(Chrome、Firefox、Opera、Edge 和 Safari)编写脚本。Selenium 不是很快,也不是为抓取网页而设计的,但它仍然是控制无头浏览器的流行工具。

尝试新的多引擎无头 API – Playwright

Playwright 是一个相对较新的 node.js 库,用于控制无头浏览器。它由微软维护。与 Selenium 一样,Playwright 支持页面导航、输入事件、下载和上传数据、模拟移动设备等等。该库的最大优势在于它可以模拟所有三个主要浏览器组:Chromium、Firefox 和 WebKit。

使用 Puppeteer 控制 Headless Chrome

Puppeteer 是一个 node.js 库,用于控制无头 Chrome(以及最近的 Firefox)。它由 Chrome 的开发人员构建,因此该库维护良好,并且与它的“puppet”浏览器具有良好的兼容性。Puppeteer 允许抓取页面、点击元素、下载数据、使用代理等等。它已成为在网络抓取中控制无头浏览器的最流行的选项之一。

Puppeteer 还有一个名为 Pyppeteer 的 Python 姊妹库。但是,它是非官方的,因此您可能无法获得相同的功能或支持。

使用 Splash 大规模抓取 JavaScript 网站

Splash 是由 ScrapingHub 维护的轻量级无头 Web 浏览器。它使用 WebKit 来呈现 JavaScript,并且可以使用用 Lua 编写的脚本进行扩展。Splash 具有模拟复杂的类人交互的命令,以及阻止广告和关闭图像以减少资源使用的能力。再加上 Scrapy 框架,它允许从大量 JavaScript 网站中大规模提取数据。

blank

Written by 爬取 大师