Node爬虫工具Puppeteer入门教程实践

Node爬虫工具Puppeteer入门教程实践

什么是Puppeteer?

Puppeteer 是 Google 推出的一个 Node 库,通过使用这个库可以方便的控制浏览器并进行网页爬取、数据提取等操作。Puppeteer 使用了类似 Chrome DevTools Protocol 的协议进行通信,所以我们可以直接通过 JavaScript 控制 Chrome 或 Chromium。具体来说,它可以做到:

  • 页面截图、PDF生成
  • 模拟用户操作(如点击、输入等)
  • 网络数据获取(如 AJAX 请求、WebSocket 数据获取等)
  • 页面自动化测试

安装Puppeteer

我们可以使用 npm 来安装 Puppeter。

在控制台执行如下命令:

npm install puppeteer

使用Puppeteer

下面介绍两个示例说明如何使用Puppeteer进行网页爬取。

示例一:爬取网页标题

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://www.baidu.com');
  const title = await page.title();
  console.log(title);
  await browser.close();
})();

上面的代码中,我们通过 puppeteer.launch() 方法打开了一个 Chromium 浏览器实例,并通过 browser.newPage() 方法打开了一个新的页面,随后通过 page.goto() 方法加载了百度网站并等待加载完成。最后我们通过 page.title() 方法获取了网页的标题,打印出来。

示例二:抓取淘宝首页热门商品列表信息

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://www.taobao.com');
  const items = await page.evaluate(() => {
    const items = [];
    const itemList = document.querySelectorAll('.J_Module.flags');
    itemList.forEach((item) => {
      const title = item.querySelector('.cate-title').textContent.trim();
      const products = [];
      item.querySelectorAll('.cate-one').forEach((product) => {
        const name = product.querySelector('.name').textContent.trim();
        const price = product.querySelector('.price').textContent.trim();
        products.push({
          name,
          price,
        });
      });
      items.push({
        title,
        products,
      });
    });
    return items;
  });
  console.log(items);
  await browser.close();
})();

这段代码中,我们首先打开了淘宝首页,然后通过 page.evaluate() 方法利用 DOM API 来获取页面中的商品信息,最后将结果打印出来。

结语

Puppeteer 的使用非常灵活,我们可以通过它来实现各种各样的功能,比如网页自动化测试、控制浏览器生成 PDF 文件、模拟用户操作等。在使用过程中需要注意的是,爬虫的行为需要遵守网站的规定,否则可能会触发反爬虫机制,甚至可能会产生法律风险。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Node爬虫工具Puppeteer入门教程实践 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • Nodejs封装类似express框架的路由实例详解

    下面是关于“Nodejs封装类似express框架的路由实例详解”的完整攻略。 前言 首先,我们需要了解一下什么是路由(Routing)。在Web开发中,路由的作用是将请求(URL)和处理函数对应起来,使得不同的请求请求会被分配到相应的处理函数中。这种映射关系就是路由。在Node.js中,我们可以使用原生的http模块来实现基本的路由。但是,使用原生路由实现…

    node js 2023年6月8日
    00
  • 使用Node.js实现简易MVC框架的方法

    使用Node.js实现简易MVC框架是一项非常有意义的工作,它可以帮助我们更好地管理和组织项目的代码。下面是实现简易MVC框架的攻略: 1. 什么是MVC框架? MVC是一种软件设计模式,采用三层结构分别是模型层、视图层和控制层。模型层主要负责数据的操作、数据类型的使用,视图层负责数据的展示、用户的交互反馈,控制层主要负责连接模型和视图,完成业务逻辑。 在N…

    node js 2023年6月8日
    00
  • vue中wangEditor5编辑器的基本使用

    Vue中wangEditor5编辑器的基本使用攻略 安装wangEditor5 通过npm进行安装 npm install wangeditor –save 引入wangEditor 在Vue项目的入口文件main.js中引入wangEditor,并且将它挂载到Vue实例上去。 “` import Vue from ‘vue’ import WangEd…

    node js 2023年6月9日
    00
  • js常用代码段整理

    JS常用代码段整理攻略 在Web开发中,常常需要用到JavaScript来实现动态效果和交互行为。为了提高开发效率和代码质量,我们可以整理出常用的JavaScript代码段,方便在项目中复用。本文将分为以下几个部分来介绍如何整理JS常用代码段: 1. 收集常用代码段 在开发过程中,积累下来的常用代码段十分重要。积累的方式可以是自己写的,也可以是网络上扒得过来…

    node js 2023年6月8日
    00
  • 使用Jenkins自动化构建工具进行敏捷开发

    使用Jenkins自动化构建工具进行敏捷开发的完整攻略如下: 总览 敏捷开发可以节省大量时间,但是仍然需要重复的工作。Jenkins为这样的任务提供了自动化解决方案。Jenkins是一个持续集成和持续交付的服务器,它可以更快地构建、测试和部署应用程序。 我们可以使用Jenkins来将不同的代码版本结合在一起,构建和部署应用程序,并执行其他一些任务,例如生成文…

    node js 2023年6月8日
    00
  • 使用vue-cli初始化项目时运行‘npm run dev’报错及解决

    当使用vue-cli来初始化项目时,执行npm run dev命令时有可能出现各种类型的错误。这些错误可能会包括npm包的依赖关系、配置问题、端口占用等。在本文中,我们将介绍如何识别并解决其中的一些常见错误。 错误1:The System Cannot Find the Path Specified 这个错误通常意味着你没有正确设置项目的路径。例如,当你在W…

    node js 2023年6月8日
    00
  • Java新特性之Nashorn_动力节点Java学院整理

    Java新特性之Nashorn_动力节点Java学院整理 简介 Nashorn 是 JDK 8 中引入的一套用于在 Java 平台上运行 Javascript 脚本的引擎,它可以支持 ES5 以及部分 ES6 的语法。使用 Nashorn 引擎可以让我们轻松地将 Java 代码与 Javascript 代码融为一体,实现更高效的编程。 使用方法 在 Java…

    node js 2023年6月8日
    00
  • Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)

    完成该任务需要涉及到以下几个步骤: 导入相关模块 获取本机IP地址及子网掩码 构建IP地址范围 扫描IP地址范围 发现Web服务器并输出地址 具体实现情况如下: 导入相关模块 在开始之前,需要导入以下几个Node.js核心模块: const os = require(‘os’); const net = require(‘net’); const {work…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部