说到爬虫,就不得不接触一些反爬的技术了。其中,针对一些无法绕过或者无法正常阅读的JS代码,我们的最终法宝就是无头浏览器了!
无头浏览器其实就是为我们提供了一个环境,这个环境让我们可以使用一些指令,这些指令基本能够包含人们能够用到的所有操作,所以特别适合用来做一些自动化测试(界面,接口或者漏洞),或者爬虫。
在Puppeteer之前,还是有很多无头浏览器的,比如老牌的selenium,还有phantomJs,目前他们已经基本停止维护,所以我们今天的主角就是Puppeteer了!Puppeteer到底如何使用呢?使用的时候又有哪些坑呢?请听老高一一道来!
本篇是第一篇,主要让大家对Puppeteer有一个基本的概念!
由此可见,想要使用puppeteer,需要有使用node和npm的基础!
nodejs的安装老高就不多说了,不过老高要啰嗦的是chromium
的下载:
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD
这个环境变量,就不会下载了。export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
,再执行npm install
命令。executablePath
,并指向对应路径即可。Chromium.app/Contents/MacOS/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程序已经搞定!如果没有,请在下方留言,告诉老高你遇到的问题,老高十分乐意为你解答!