zoukankan      html  css  js  c++  java
  • puppeteer在mac和ubuntu上的安装使用

    puppeteer已经出来很长一段时间了,这两天闲着没事玩了下爬虫,整体体验不错。这里主要是介绍安装方法,因为遇到了一些坑

    mac

    方法一

    在安装puppeteer包时,由于其依赖了chromium,因此包的体积很大,下载过程较慢。可以通过下面的命令修改包的源地址,再安装时就会快很多

    npm config set puppeteer_download_host=https://npm.taobao.org/mirrors
    

    也可以在用户文件夹下找到.npmrc文件,添加uppeteer_download_host=https://npm.taobao.org/mirrors,然后再执行npm install

    方法二

    上述方法的问题是,每次新建项目时都要安装下puppeteer,很占硬盘空间。解决方法是从chromium官网先下载一个安装包,解压后把它放到一个目录下,然后设置executablePath选项,指向chromium

    下面是一个简单示例

    # 该操作不下载chromium,只下载puppeteer依赖的一些node包
    npm i --save puppeteer --ignore-scripts
    
    const puppeteer = require('puppeteer');
    
    (async () => {
      const browser = await puppeteer.launch({
            // 指定chromium地址
            executablePath: '/Users/wmui/Documents/demo/Chromium.app/Contents/MacOS/Chromium',
            // 打开开发者工具
            devtools: true,
            // 打开浏览器
            headless: false,
            args: ['--disable-dev-shm-usage']
        });
      const page = await browser.newPage();
      await page.goto('https://example.com');
      await page.screenshot({path: 'example.png'});
    
      await browser.close();
    })();
    

    ubuntu

    在服务器端安装有些麻烦,官方给出了安装时的注意注意事项,移步至此。我用的服务器是Ubuntu,下面是安装步骤

    首先要安装下面这些依赖包

    sudo apt-get install gconf-service libasound2 libatk1.0-0 libatk-bridge2.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
    

    然后配置args选项为黑盒模式

    args: ['--disable-dev-shm-usage', '--no-sandbox',  '--disable-setuid-sandbox']
    

    完成上面的操作就可以正常启动puppeteer了

    学习资料

    官方文档

    从零开始开发一个Node交互式命令行应用

    爬虫利器 Puppeteer 实战

    结语

    本来是爬豆瓣图书练手的,无奈爬了一万本IP被封了,好在过了一天又解封了。puppeteer是支持设置代理的,通过配置args: ['--proxy-server=http://127.0.0.1:3000'],可以以代理身份发送请求,我试了下免费的代理都很慢,不过既然是为了玩,慢也无所谓了。后面如果有时间,会分享一篇用puppeteer爬豆瓣的文章。

    以上,感谢阅读!

    常用网站: SegmentFault | GitHub | 掘金社区
  • 相关阅读:
    离线计算框架 MapReduce
    Hadoop概述
    Linux之rpm/yum
    Linux之磁盘分区
    利用CMD合并多个VOB文件
    android中的simple_list_item
    jquery中的跨域-jsonp格式
    安卓代码中设置ImageView属性
    Android中常用的Adapter的种类和用法
    C#导入excel文件到oracle的方法
  • 原文地址:https://www.cnblogs.com/yesyes/p/15382614.html
Copyright © 2011-2022 走看看