返回

从实用角度详析 Puppeteer 爬虫 API用法

前端

运用 Puppeteer 开发高效爬虫

安装 Puppeteer

Puppeteer 是一款强大的基于 Chromium 的无头浏览器,可供你像浏览器一样访问和控制网页。第一步,在你的项目中安装 Puppeteer:

npm install puppeteer

Puppeteer 基本用法

Puppeteer 的用法极其简洁。创建浏览器实例:

const browser = await puppeteer.launch();

然后,你可以操作网页,例如打开新页面:

const page = await browser.newPage();

接着,导航至指定 URL:

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

获取页面内容:

const title = await page.title();

Puppeteer 高级特性

除了基本功能,Puppeteer 还提供了强大的特性:

  • 页面截图 :保存页面状态为图像。
  • 元素选择器 :轻松找到页面元素。
  • 事件监听 :监听页面事件(如点击、滚动)。
  • 资源加载 :获取页面加载的资源(如图片、样式表)。
  • Cookie 管理 :管理页面 Cookie。
  • 地理位置模拟 :模拟页面地理位置。
  • 代理服务器 :使用代理服务器访问网页。

使用示例

现在,让我们通过一个示例来探索 Puppeteer。我们使用 Puppeteer 爬取 GitHub Trending 页面上的项目列表:

const puppeteer = require('puppeteer');

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

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

  const projects = await page.$('.Box-row');

  for (const project of projects) {
    const title = await project.$eval('h3 a', el => el.textContent);
    const description = await project.$eval('p', el => el.textContent);
    const stars = await project.$eval('.octicon-star', el => el.textContent);

    console.log(`${title}\n${description}\n${stars}`);
  }

  await browser.close();
})();

这段代码创建了浏览器实例和页面,导航至 GitHub Trending 页面,找到项目列表,并输出每个项目的标题、和星标数。

总结

Puppeteer 是一个强大的工具,可用于构建各种爬虫和自动化测试脚本。本文涵盖了 Puppeteer 的基本用法、高级特性和使用示例。无论你是新老手,都可以使用 Puppeteer 简化你的 Web 爬虫任务,实现自动化测试和数据采集。

常见问题解答

  1. Puppeteer 可以爬取受密码保护的网站吗?
    答:可以,但你需要提供登录凭证。

  2. Puppeteer 可以爬取 JavaScript 生成的内容吗?
    答:可以,Puppeteer 会等到 JavaScript 执行完毕后再加载页面。

  3. Puppeteer 可以爬取受反爬虫机制保护的网站吗?
    答:可以,但需要使用反反爬虫技术,如代理服务器和用户代理轮换。

  4. Puppeteer 与 Selenium 有什么区别?
    答:Puppeteer 专注于无头浏览器自动化,而 Selenium 则适用于各种浏览器和平台的自动化测试。

  5. Puppeteer 可以用于自动化哪些任务?
    答:Puppeteer 可用于 Web 爬虫、自动化测试、页面截图和数据采集。