简介:看到自己喜欢的在线文档,是不是总想保存下来慢慢学习。可是苦于没有现成的工具,这里我来介绍两个 JS 类库,只需要简单封装一下,从此想抓哪里抓哪里。一、使用 Phantomjs1.简单使用上面是一个完整的示例,我们来看 ...

看到自己喜欢的在线文档,是不是总想保存下来慢慢学习。可是苦于没有现成的工具,这里我来介绍两个 JS 类库,只需要简单封装一下,从此想抓哪里抓哪里。

抓取网页生成 PDF

一、使用 Phantomjs1.简单使用

抓取网页生成 PDF

上面是一个完整的示例,我们来看看最核心的部分,不妨放大一下:

抓取网页生成 PDF

嗯,结合起来,就完美了。下面就是最佳实践:

抓取网页生成 PDF

因为 open 操作会有响应时间,所以需要使用 setTimeout 来确保流程。

这里需要额外补充一点,如果需要检测 UA,那么你需要这么使用:

抓取网页生成 PDF

代码很简单,快点上手试一下吧。二、使用 Puppeteer

抓取网页生成 PDF

既然 Phantomjs 这么好用,为啥还要了解 Puppeteer ?

提到这个问题,我们不得不来说一下 Puppeteer 强大的官方背景:Puppeteer(木偶) 英[ppt(r)],美[pptr],是 Google Chrome 团队官方的无界面 (Headless)Chrome 工具。

所以不管从以后的发展还是完整性方面,Puppeteer 都是我们的首选。

那么,Puppeteer 能用来干啥,有哪些功能:
  • 生成页面的截图和 PDF
  • 爬取网站内容
  • 模拟登陆、自动提交表单,UI 测试,键盘输入等
  • 使用最新的 JavaScript 和浏览器功能,直接在最新版本的 Chrome 中运行测试。
  • 捕获网站的时间线跟踪,以帮助诊断性能问题
  • 测试 Chrome 扩展程序

说了这么多,让我们快速开始,迅速的体验一把。

1.安装
npm i puppeteer
2.注意事项安装并不会那么顺利,因为要依赖 Chromium ,所以你可能会遇到这样的异常。
Note: When you install Puppeteer, it downloads a recent version of Chromium (~170MB Mac, ~282MB Linux, ~280MB Win) that is guaranteed to work with the API. To skip the download, see Environment variables.
正确姿势:
set PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1npm i puppeteer# 或者忽略依赖脚本安装 jartto"s demonpm i --save puppeteer --ignore-scripts
如果不能翻墙下载,那么就手动去官网下载 Chromium 吧。当然,坑远不止这些,感兴趣的童鞋可以戳这里 Puppeteer 异常处理。3.下载核心包
npm i puppeteer-core
从 1.7 版本开始发布 puppeteer-core ,他默认不会下载 Chromium 。puppeteer-core 使用已安装的浏览器 或远程浏览器。具体可以查看官网文档 puppeteer vs puppeteer-core.4.示例生成网站快照:

抓取网页生成 PDF

通过网站地址,生成 pdf:

抓取网页生成 PDF

设置视口:
await page.setViewport({width: 1024, height: 880});
设置 cookie:

抓取网页生成 PDF

模拟设备 iphonex 来生成截图:

抓取网页生成 PDF

如果是本地的 chromium ,记得配置:
 executablePath: ‘chromium/Chromium.app/Contents/MacOS/Chromium’。
更有趣的事情是,我们可以搜索一些关键字来生成快照,譬如:

抓取网页生成 PDF

执行上面的代码,将会打开百度搜索引擎,同时搜索关键字 jartto,跳转完成后进行截屏,存成图片。核心代码:

抓取网页生成 PDF

一定要找准对应元素的 id,我们可以使用 chrome 开发者工具切换手机模式查看元素。

5.相关资源学习资源总是很多,由浅入深的学习将会事半功倍,下面我稍微整理一下。阶段一:
  • 在线 DEMO
  • 了解 Puppeteer
  • Puppeteer入门及实践
  • Chromium 下载跳坑
  • 通过 Puppeteer 生成 PDF 文件
阶段二:
  • 深入 Puppeteer
  • Puppeteer 异常处理
阶段三:
  • 中文文档
  • Puppeteer API

循序渐进的开始你的学习旅程吧。

三、总结

抓取网页生成 PDF

文章提供了两种方式,在线抓取 URL 生成 PDF,当然插件的功能并不简单如此,你还可以做更多有趣的事情。嗯,慢慢摸索、积累,相信我,总有一天你会用上的。本文仅代表作者个人观点,不代表巅云官方发声,对观点有疑义请先联系作者本人进行修改,若内容非法请联系平台管理员,邮箱2522407257@qq.com。更多相关资讯,请到巅云www.rzxsoft.cn学习互联网营销技术请到巅云建站www.rzxsoft.cn。