本笔记记录request模块使用方法
- request模块用于网页链接url的请求,获取对应网页的HTML文档。
- 常用于爬虫,可以用于获取基于http或者https的协议的网站。
- 这里通过引入代码进行实际使用。
// 终端下载外部模块request
// 指令: cnpm i request --save
// 安装完后会出现node_modules文件夹(存放外部有关模块以及依赖)
// 还有package.json存放下载的模块以及对应环境
// 引用外部模块request,在NPM网站查看对应模块
let request = require('request');
// 引入fs文件模块,帮助爬取的页面写入html文件里面
let fs = require('fs');
// 引入iconv-lite模块,处理页面gbk编码的问题
let iconv = require('iconv-lite');
// request.get方法去获取网页相关信息,即于网页匹配的信息,该信息包括ajax url, method, ext等等...
request.get({
// 匹配url,需要爬取的网页链接
// 这里百度网页的链接url
url: `https://www.baidu.com/`,
//encoding: null //如果需要进行转码gbk,这是必要的操作
}, ( err, res, body) => {
// 回调函数,返回爬取的信息
// err: 如果爬取失败,返回的信息
// res: 做出响应,返回网站所有的信息
// body: res返回的信息中的网页主体代码
if( err ) throw err; //如果爬取失败,抛出错误信息
// 1.存放百度页面主体内容代码
let str = '';
// 在进行解码之后, 将每张页面给存放页面的空字符串
//str = iconv.decode( body, 'gb2312' );
// 如果不需要进行解码,则直接将页面主体给到str中
str = body;
// 2.以文件流形式写入到baidu.html文件中,文件不存在会自动新建
fs.writeFileSync('./baidu.html', str);
});
- 这里获取的百度网页HTML文档,截图为部分百度HTML代码,这里经过了格式化文档处理,看起来整洁许多。
- 上面代码值得说的一点,就网页编码的问题,如果有出现中文乱码的情况,即HTML页面的头信息里面页面编码格式为gbk,那么推荐引入iconv-lite模块,进行页面的转码,之后即可正常显示中文。
- 具体转码的代码在上面代码中注释部分有体现,主要步骤在引入模块后,需要在get方法第一个参数里面清除页面原有编码,之后在获取到的页面body部分,进行iconv.decode方法的使用,执行转码即可获取正常编码的页面主体body。
- 之后会在爬取图片和小说上面进行具体使用request。