最近想找几本小说来看看,确实是有很多网站可以找到,但是无奈广告巨多,提供的下载链接还。。。说多都是泪啊。既然你不仁,就没办法了。只有通过爬虫来爬了你啦。
puppeteer是谷歌发布的NodeJs库。通过DevTools Protocol用于控制chrome或者chromium,里面提供了高级API,默认以无头浏览器的方式启动。
puppeteer API文档在这里可以查找
puppeteer这个工具,个人觉得不错,配置简单方便。ok,就此决定是你啦。下面介绍小说爬虫工具的平生吧。。。
1.安装nodejs(LTS版本就好了)
#ubuntu
下载完成后是一个压缩包,直接解压到自己想放的位置去。这里我直接放到了$HOME文件夹中。然后配置下链接就可以使用了。
tar xvJf node-v8.11.3-linux-x64.tar.xz -C ~/
cd ~/node-v8.11.3-linux-x64/bin
sudo ln -s node /usr/bin/node
sudo ln -s npm /usr/bin/npm
#windows
windows可以选择下载的包有有msi和zip,随便选一个下载。msi直接安装在C盘就ok(毕竟是命令工具),zip包也建议解压到C盘目录。
这里建议是(C:\Program Files (x86)\nodejs\)。msi文件的安装可以选择加入环境变量,但是zip包还需要自己配置,具体配置方法请搜索环境变量配置方法,把bin里面的 node 和 npm 执行文件的目录加入PATH中。
以上步骤完成后,请打开终端测试(windows 系统:win+R 输入CMD回车)
输入命令
node -v
输出 v8.11.3(这是版本号)就ok了。
2安装puppeteer
命令行执行
npm i puppeteer --save -g
安装过程可能会下载chromium。如果下载失败请搜索 cnpm。下载完成后未必可以马上使用,坑爹的npm有可能会把包放到了一个node找不到的位置去。这时候需要为刚才下载的包配置下环境变量(至少我在windows上需要,下载到的目录是:C:\Users\你的用户名\AppData\Roaming\npm\node_modules 加入环境变量中)。ok至此环境已经完全搞定。赶紧试下怎么用。
3使用puppeteer
新建一个 hello.js文件
/*加载puppeteer库*/
const puppeteer = require('puppeteer');
/*定义一个异步函数执行*/
(async ()=> {
//创建一个浏览器
var browser = await puppeteer.launch({
headless:false, //是否以无头模式运行
}).catch(ex => {
console.log(ex);
});
if (!browser) {
console.log('browser launch failed!');
return;
}
//创建一个新页面
var page = await browser.newPage().catch(ex=>{
console.log(ex);
});
if (!page) {
console.log('fail to open page!');
browser.close().catch(e=>{});
return;
}
var respond = await page.goto("http://www.baidu.com/", {
'waitUntil':'domcontentloaded',
'timeout':120000
}).catch(ex=>{
console.log(ex);
});
if (!respond) {
console.log('fail to goto website!');
browser.close().catch(e=>{});
return;
}
})()
然后到文件目录下打开终端,执行
node hello.js
成功打开浏览器即成功!!
恭喜,迈向了成功的一步了。
下一篇将讲解爬取小说的基本逻辑