Puppeteer环境搭建的详细步骤

请您耐心阅读我的回答。

Puppeteer环境搭建的详细步骤

1. 安装Node.js

官方下载地址:https://nodejs.org

Puppeteer是基于Node.js开发的,因此要使用Puppeteer,必须先安装Node.js。下载安装完毕后,在命令行窗口中输入以下命令,检查是否安装成功:

node -v

若能正确输出Node.js的版本号,则说明安装成功。

2. 安装Puppeteer

在命令行窗口中输入以下命令,即可安装Puppeteer:

npm install puppeteer

3. 常见问题及解决方法

3.1 安装Puppeteer时下载缓慢

解决方法:

方案1

找到npm的全局配置文件 .npmrc(没有则新建),加入如下内容:

registry=https://registry.npm.taobao.org

保存退出后,再重新输入安装命令即可。

方案2

使用cnpm(淘宝npm)安装,命令如下:

cnpm install puppeteer

3.2 Puppeteer启动时报错

由于Puppeteer需要启动Chrome浏览器,因此在启动时可能会报错。常见错误如下:

3.2.1 命令行窗口提示Chrome相关文件未找到

解决方法:

安装所需的依赖,命令如下:

sudo apt-get install libx11-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxext-dev libxi-dev libxtst-dev libnss3-dev libcups2-dev libatk-bridge2.0-dev libgtk-3-dev libgconf-2-4 libasound2-dev libpangocairo-1.0-0

3.2.2 命令行窗口提示Chrome需要更新

解决方法:

升级所需的依赖,命令如下:

sudo apt-get update && sudo apt-get install -y libxss1 libappindicator1 libindicator7 libx11-xcb-dev libgtk-3-0 libatk-bridge2.0-0 libasound2 libnss3 xdg-utils fonts-liberation libgbm-dev

3.3 Puppeteer启动的Chrome浏览器未启用JavaScript

解决方法:

启动Chrome浏览器时,添加 --enable-features=NetworkService 参数,命令如下:

const browser = await puppeteer.launch({
  args: ['--enable-features=NetworkService']
});

示例

示例1:截取网页截图

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  const url = 'http://baidu.com';
  await page.goto(url, {waitUntil: 'networkidle2'});
  await page.screenshot({path: 'baidu.png'});
  await browser.close();
})();

上述代码用Puppeteer打开百度网站,等待页面加载完毕后,截取页面截图并保存为baidu.png。

示例2:获取百度搜索结果

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  const url = 'https://www.baidu.com/s?ie=UTF-8&wd=puppeteer';
  await page.goto(url, {waitUntil: 'networkidle2'});
  const results = await page.$$('.result.c-container');
  for (let i = 0; i < results.length; i++) {
    let text = await page.evaluate(el => el.textContent, results[i]);
    console.log(text);
    console.log('----------------------');
  }
  await browser.close();
})();

上述代码用Puppeteer打开百度搜索Puppeteer的结果页,获取所有搜索结果,并将搜索结果的文字信息输出到控制台。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Puppeteer环境搭建的详细步骤 - Python技术站

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

相关文章

  • JavaScipt中栈的实现方法

    JavaScript中栈的实现方法 什么是栈 栈(Stack)是一种遵循后进先出(LIFO)原则的一种数据结构,类似于一摞书或光盘。在栈中,进行插入操作的一段被称为栈顶,而进行删除操作的一端被称为栈底。 在JavaScript中,栈主要用于实现函数调用堆栈。当函数嵌套调用时,需要将当前函数的状态(变量、参数等)以及下一步要执行的指令等信息保存在栈中;当函数调…

    node js 2023年6月8日
    00
  • 详解Node全局变量global模块

    下面针对Node全局变量global模块做一份详细的攻略,内容如下: 什么是global模块 在Node中,global是全局变量的容器,也就是说在Node中所有的变量、函数、对象都是global的属性,因此global是Node中的全局命名空间。 如何使用global模块 我们可以使用全局变量global来声明全局变量,如下面的示例: // 全局属性gre…

    node js 2023年6月8日
    00
  • 多个vue项目复用一个node_modules的问题

    首先需要明确的是,当我们说复用node_modules时,我们指的是多个Vue项目共享一个node_modules文件夹,而不是多个项目共用一个包的实例。 一般来说,我们将每个Vue项目的依赖安装在各自的node_modules文件夹中,这样可以确保每个Vue项目的依赖不会相互影响。但是,当我们需要同时维护多个Vue项目时,这样做就会带来很多重复的工作。为了…

    node js 2023年6月8日
    00
  • Vue3源码通过render patch 了解diff

    关于Vue3源码通过render patch了解diff的完整攻略如下: 1. 什么是Vue3中的diff 在Vue3中,diff算法是通过render函数以及patch方法实现的。在Vue2中的vdom更新算法中,每次更新都会重新创建一颗虚拟DOM树,并比对新旧节点的差异性,因此效率相对较低。在Vue3中,则针对性地对更改前后的虚拟DOM进行比较,同时利用…

    node js 2023年6月8日
    00
  • JS 中实现一个串型异步函数队列

    异步函数队列的定义 在JS中,异步函数队列是指将多个异步函数串连起来按照顺序执行的一种方式。每个异步函数需要等待上一个异步函数完成后才能执行,如此循环执行下去。这种实现方式通常用于异步任务按照顺序逐步执行的场景中,例如:多个Ajax请求,或者是依赖关系复杂的操作。 实现串型异步函数队列的方法 实现JS中串型异步函数队列的方法有很多种,我将会介绍一种较为常用的…

    node js 2023年6月8日
    00
  • 如何解决uni-app编译后 vendor.js 文件过大

    解决uni-app编译后vendor.js文件过大的完整攻略如下。 问题分析 首先需要了解的是,uni-app在编译后会生成一个vendor.js文件,包含了所有npm包和uni-app框架代码。由于vendor.js包含了大量代码,导致文件过大,从而使得应用程序的启动速度变慢,影响用户体验。 解决方案 1. 使用import或require来按需加载npm…

    node js 2023年6月8日
    00
  • 微信小程序canvas开发水果老虎机的思路详解

    微信小程序canvas开发水果老虎机的思路详解 1. 简介 本篇教程主要介绍了如何使用微信小程序的Canvas API来开发一个老虎机游戏。游戏的主要流程是:用户按下开始按钮,老虎机开始滚动,最后停留在随机选中的水果图案上,显示用户是否中奖。其中,游戏的UI界面通过Canvas绘制实现。 2. 开发步骤 2.1 构建UI界面 首先,我们需要通过Canvas …

    node js 2023年6月8日
    00
  • 简单模拟node.js中require的加载机制

    在Node.js中,常用的模块系统是CommonJS规范,其中require函数是加载模块的入口。这里简要介绍一下Node.js中require的加载机制。 加载机制 Node.js中require函数的加载机制基于以下两个原则:1. 模块只会被加载一次,重复的调用require只会返回内存缓存中已有的模块。2. 模块的加载顺序是深度优先,同级模块会被加载一…

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