puppeteer的使用教程1 - 基本用法
2023-02-18 16:44:49 时间
说到爬虫,就不得不接触一些反爬的技术了。其中,针对一些无法绕过或者无法正常阅读的JS代码,我们的最终法宝就是无头浏览器了!
无头浏览器其实就是为我们提供了一个环境,这个环境让我们可以使用一些指令,这些指令基本能够包含人们能够用到的所有操作,所以特别适合用来做一些自动化测试(界面,接口或者漏洞),或者爬虫。
在Puppeteer之前,还是有很多无头浏览器的,比如老牌的selenium,还有phantomJs,目前他们已经基本停止维护,所以我们今天的主角就是Puppeteer了!Puppeteer到底如何使用呢?使用的时候又有哪些坑呢?请听老高一一道来!
本篇是第一篇,主要让大家对Puppeteer有一个基本的概念!
官网和工具
由此可见,想要使用puppeteer,需要有使用node和npm的基础!
准备工作
nodejs的安装老高就不多说了,不过老高要啰嗦的是chromium
的下载:
- 最好在安装puppeteer之前就下载解压好chromium,当然你也可以默认使用自带的浏览器。
- 执行安装脚本时如果程序没有找到chromium,会执行自动下载流程,这时如果检测到有
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD
这个环境变量,就不会下载了。 - 所以可以先执行
export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
,再执行npm install
命令。 - 安装完成后,在脚本中启动chrome的参数中加入
executablePath
,并指向对应路径即可。 - win下路径要填写到exe,linux下是chrome,而MacOS下则是
Chromium.app/Contents/MacOS/Chromium
,不要填错了! - 为了保证测试环境和生产环境的版本一致性,一定要记录Chromium的版本号。
第一个脚本
首先找一个干净的文件夹,比如 try_puppeteer
,然后找到chrome的安装路径为/Users/xxx/code/Chromium.app/Contents/MacOS/Chromium
,很明显,老高的系统为MacOS。最后将下面的代码保存为1.js
,如果是安装程序自动下载的浏览器,请把args置为{}
即可!
const puppeteer = require('puppeteer');
args = {
executablePath: '/Users/xxx/code/Chromium.app/Contents/MacOS/Chromium',
};
(async () => {
const browser = await puppeteer.launch(args);
const page = await browser.newPage();
await page.goto('https://www.mi.cn');
await page.screenshot({ path: 'mi.png' });
await browser.close();
})();
执行完毕后,文件夹中应该多了一个叫mi.png
的文件,其内容为小米的官网,对吗?
至此,你的第一个puppeteer程序已经搞定!如果没有,请在下方留言,告诉老高你遇到的问题,老高十分乐意为你解答!
相关文章
- JAVA只要掌握内部类,多继承和单继承都不是问题
- 今儿直白的用盖房子为例,给你讲讲Java建造者模式
- 用实例带你深入理解Java内存模型
- 你知道,java项目中是如何获取文件地址的吗?
- 【架构师(第十五篇)】脚手架之创建项目模板开发
- 【架构师(第十六篇)】脚手架之创建项目模板的下载与更新
- 【架构师(第十八篇)】脚手架之项目模板的安装
- 【架构师(第十九篇)】脚手架之组件库模板开发
- 【架构师(第二十篇)】脚手架之自定义模板及第一阶段总结
- 【架构师(第二十一篇)】编辑器开发之需求分析和架构设计
- 【架构师(第二十二篇)】编辑器开发之项目整体搭建
- 【架构师(第二十三篇)】编辑器开发之画布区域组件的渲染
- 【架构师(第二十四篇)】编辑器开发之添加模版到画布
- Java异常处理:如何写出“正确”但被编译器认为有语法错误的程序
- 我以订披萨为例,给女朋友详细讲了Java设计模式的3种工厂模式
- 【架构师(第二十五篇)】编辑器开发之属性编辑区域表单渲染
- 【架构师(第二十六篇)】编辑器开发之属性编辑同步渲染
- 2021年度“CCF-腾讯犀牛鸟基金”发布结题评优结果
- 【架构师(第二十七篇)】前端单元测试框架 Jest 基础知识入门
- 太空噗|重燃太空热潮!与噗噗星人一同探索星海浪漫