09-request模块

本笔记记录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部分截图

  • 上面代码值得说的一点,就网页编码的问题,如果有出现中文乱码的情况,即HTML页面的头信息里面页面编码格式为gbk,那么推荐引入iconv-lite模块,进行页面的转码,之后即可正常显示中文。
  • 具体转码的代码在上面代码中注释部分有体现,主要步骤在引入模块后,需要在get方法第一个参数里面清除页面原有编码,之后在获取到的页面body部分,进行iconv.decode方法的使用,执行转码即可获取正常编码的页面主体body。
  • 之后会在爬取图片和小说上面进行具体使用request。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐沐茶壶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值