开篇寄语
还是在制作Easy Web TV中发现的问题,那就是在搭建小说板块的时候,想要爬取数据的时候,在解析一些小说源站的时候会出现乱码问题,仔细检查了目标网站的源码,原来是编码格式问题,只有utf-8格式可以解析,gbk网站完全是乱码,而很多中文小说网站就是这样设置成了GBK模式。而在Nodejs中,有一个名为iconv-lite的模块可以很容易解决这个问题,解码成utf-8格式,这样就能得心应手的进行爬取数据了,那么该如何使用呢?请看本篇。
前情提要
内容详情
nodejs安装和检查是否安装成功就不多说了,具体可以参看上方的前情提要,而本篇文章需要用到的依赖包需要进行安装,request, cheerio, iconv-lite:
npm install request npm install cheerio npm install iconv-lite
安装完成后,先找一个目标网站,比如:
- https://www.qb5.la/
调出调试窗口,可以从中看到该网站的编码格式是gbk,如下图所示:
可以看到,<meta>标签中的'gbk'过于明显,如果我们想爬取红圈中的标题,如果按照之前的经验,得到的是一片空白,所以要进行转码为utf-8,那么就有了以下代码:
var request = require('request'); var cheerio = require('cheerio'); var iconv = require('iconv-lite'); option = { url: 'https://www.qb5.la/', encoding: null } request(option, function(err, res, body) { if (err) throw err; body = iconv.decode(body, 'gbk'); var $ = cheerio.load(body); console.log($('head title').text()); });
输出结果如下图所示:
- 我的微信
- 微信扫一扫加好友
- 我的微信公众号
- 扫描关注公众号