返回

Puppeteer 网页抓取:赋能自动化网络抓取

前端

Puppeteer 是 Google 开发的一款无头 Chrome,专为网页抓取而设计。它允许您在没有图形用户界面 (GUI) 的情况下控制 Chrome,从而可以轻松地自动化网页抓取任务。

本教程将向您展示如何使用 Puppeteer 自动化网络抓取。我们将创建一个汇总了 JavaScript 开发者远程工作的“JavaScript 求职板”。

Puppeteer 入门

在开始使用 Puppeteer 之前,您需要先安装它。您可以使用以下命令在 Node.js 中安装 Puppeteer:

npm install puppeteer

安装完成后,您就可以开始使用 Puppeteer 了。首先,您需要创建一个新的 Puppeteer 实例:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
})();

Puppeteer 实例创建后,您可以使用它来打开一个新的页面:

const page = await browser.newPage();

页面打开后,您可以使用它来导航到您想要抓取的网站:

await page.goto('https://example.com');

使用 Puppeteer 抓取网页

Puppeteer 提供了多种方法来抓取网页内容。其中一种方法是使用 page.content() 方法。此方法将返回页面的 HTML 内容:

const html = await page.content();

另一种方法是使用 page.evaluate() 方法。此方法允许您在页面中执行 JavaScript 代码。您可以使用此方法来抓取页面上的特定元素或数据:

const title = await page.evaluate(() => document.title);

创建 JavaScript 求职板

现在我们已经了解了 Puppeteer 的基础知识,就可以开始创建 JavaScript 求职板了。

首先,我们需要创建一个新的 Puppeteer 实例:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
})();

接下来,我们需要打开一个新的页面并导航到 JavaScript 求职网站:

const page = await browser.newPage();
await page.goto('https://www.indeed.com/jobs?q=JavaScript+Developer&l=Remote');

页面打开后,我们可以使用 page.evaluate() 方法来抓取页面上的工作列表:

const jobs = await page.evaluate(() => {
  const jobList = document.querySelector('.jobsearch-ResultsList');
  const jobs = [];
  for (const job of jobList.children) {
    jobs.push({
      title: job.querySelector('.jobsearch-JobInfoHeader-title').innerText,
      company: job.querySelector('.company_location').innerText,
      location: job.querySelector('.location').innerText,
      link: job.querySelector('a').href,
    });
  }
  return jobs;
});

抓取到工作列表后,我们可以将其存储到数据库或文件中。您还可以使用模板引擎将工作列表渲染成 HTML 页面。

总结

Puppeteer 是一个强大的工具,可用于自动化网络抓取。在本文中,我们向您展示了如何使用 Puppeteer 创建一个汇总了 JavaScript 开发者远程工作的“JavaScript 求职板”。您可以使用 Puppeteer 来抓取各种网站的内容,并将其存储到数据库或文件中。