如果你是一个前端开发人员,你一定用过 Puppeteer。Puppeteer 是一个 Node.js 库,它提供了对谷歌 Chrome 或 Chromium 的控制,使得开发人员可以编写自动化测试、爬虫、屏幕截图等应用程序。最近,Deno 开始变得流行,让我们来看一下如何在 Deno 中使用 Puppeteer。
安装 Deno
首先,你需要安装 Deno。你可以使用以下命令行来安装 Deno:
$ curl -fsSL https://deno.land/x/install/install.sh | sh
或者你也可以通过官方网站 https://deno.land/ 下载安装程序。
创建项目
接下来,我们需要创建一个新的项目。在你的命令行下使用以下命令行:
$ mkdir puppeteer-deno $ cd puppeteer-deno $ touch index.ts
这将会在你的文件系统中创建一个新的文件夹 puppeteer-deno 并且创建了一个名为 index.ts 的新文件。我们将使用 TypeScript 来编写我们的代码。
安装 Puppeteer
接下来,我们需要安装 Puppeteer。你可以使用以下命令行来安装 Puppeteer:
$ deno install -f --allow-net --allow-read https://deno.land/x/puppeteer/mod.ts
这会下载最新版本的 Puppeteer 并将其安装在默认路径下(例如 $HOME/.deno/bin)。这个过程可能需要一段时间,具体取决于你的网络连接速度。
编写代码
接下来,我们将编写一个简单的程序来抓取 Google 的网页和第一条搜索结果。在 index.ts 文件中输入以下代码:
import { launch } from "https://deno.land/x/puppeteer/mod.ts"; async function main() { const browser = await launch(); const page = await browser.newPage(); await page.goto("https://www.google.com"); const searchInput = await page.$("[name=q]"); await searchInput?.type("deno"); const searchButton = await page.$("[name=btnK]"); await searchButton?.click(); await page.waitForNavigation(); const firstResult = await page.$("#rso > div:nth-child(1) > div > div > div > div.r > a"); const text = await page.evaluate((el) => el.textContent, firstResult); console.log(text); await browser.close(); } main();
下面是这个程序的工作方式:它启动了一个新的浏览器进程,创建了一个新的页面,导航到 Google,输入搜索词 "deno" 并点击搜索按钮,等待页面加载完成,然后从第一条搜索结果中获取文本内容并将其打印到控制台中,最后关闭浏览器。
你可以使用以下命令行来运行这个程序:
$ deno run --allow-net --allow-read index.ts
这会启动程序并爬取 Google 网页的第一个搜索结果。
总结
在本文中,我们学习了如何在 Deno 中使用 Puppeteer。我们首先安装了 Deno,然后创建了一个新的项目并安装了 Puppeteer。我们编写了一个简单的程序来抓取 Google 的网页和第一个搜索结果。这个例子可以帮助你入门 Deno 和 Puppeteer,并为你以后更复杂的应用程序提供了基础。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65b373edadd4f0e0ffc86109