美文网首页
puppeteer 爬虫

puppeteer 爬虫

作者: ape_caesar | 来源:发表于2018-05-19 15:10 被阅读0次

通过操纵谷歌chrome浏览器(或chromium)的谷歌官方api——puppeteer来实现爬虫

首先看一下puppeteer(译:提线木偶)的定义:

Puppeteer is a Node library which provides a high-level API to control headless Chrome or Chromium over the DevTools Protocol. It can also be configured to use full (non-headless) Chrome or Chromium.

总的来说就是操作谷歌浏览器的高级api;headless就是打开一个不需要图像显示的浏览器,像是后台运行一般,这样做前端测试或者爬虫就很方便,这个从chrome59代开始出现的。

需要安装的环境

  1. puppeteer是在node.js上运行的,所以首先需要安装node.js
    安装nodejs非常简单,这里就不多说了。(提一下有nvm工具是nodejs的版本控制工具,也算是比较方便)
  2. 在你安装完node.js后,node.js带有的npm包管理工具,你就可以通过如下命令安装puppeteer; npm init初始化项目这个也不必多说(可以多说的是阿里云镜像的cnpm可以在下载这些各种包的时候可以更快点,百度cnpm你就知道了)
    安装puppeteer过程中他会帮你安装自带的chromium,这个可能还下不了,网络原因还有翻墙什么的,所以我们跳过这个chromium的安装
set PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1

然后再

npm install puppeteer --save

或者直接使用如下命令也行

npm i --save puppeteer --ignore-scripts
  1. 既然我们跳过了chromium的下载,那我们自然要自己提供一个chromium(chrome也行)
    如果你电脑上有谷歌浏览器,你就直接用它就行:
    打开你的谷歌浏览器,在网址栏输入: chrome://version/
    显示的内容

从中你就能看到你的浏览器的执行路径,待会使用puppeteer的时候你会用得上。
或者你想下一个chromium(像是谷歌浏览器的测试版),我在知乎上看到一个人做了很多版本的chromium的下载,大好人,地址是http://Chromedownloads.net

好的,现在你需要的环境都搞定了。开始爬吧!

最简单的一个Demo

这里我们直接拿puppeteer文档的简单例子来看:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    executablePath:'E://nodeJs/Google/Chrome/Application/chrome.exe',
    //headless: true,
    devtools :true
  });
  const page = await browser.newPage();
  await page.goto('https://baiducom');
  await page.screenshot({path: 'example.png'});

  await browser.close();
})();
  1. 这里首先看到它通过launch方法,拿到一个browser实例,等同于你打开了你的谷歌浏览器,这里的executablePath就写你的谷歌浏览器的执行路径即可,我把他放e盘了;headless就是使用headless的方式打开浏览器;
  2. devtools就是能看到浏览器的执行过程,在测试阶段我们需要“眼睁睁”的看浏览器执行了哪些动作,所以把他打开。
  3. 然后浏览器newPage拿到一个网页,一个还没有输入网址的网页,你再通过goto方法,让他去往一个网站,然后调用screenshot方法截屏。最后关闭浏览器。可以看到这些方法都是异步的,所以都加上了await, 可以看到puppeteer对于async await的完美支持。

相关文章

网友评论

      本文标题:puppeteer 爬虫

      本文链接:https://www.haomeiwen.com/subject/zozodftx.html