用Nodejs爬取数据时无法解析GBK格式网站该如何是好?请看这篇

已收录   阅读次数: 996
2021-09-2022:55:08 发表评论
分享至:
用Nodejs爬取数据时无法解析GBK格式网站该如何是好?请看这篇

开篇寄语

还是在制作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,如下图所示:

用Nodejs爬取数据时无法解析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());
});

输出结果如下图所示:

用Nodejs爬取数据时无法解析GBK格式网站该如何是好?请看这篇
  • 我的微信
  • 微信扫一扫加好友
  • weinxin
  • 我的微信公众号
  • 扫描关注公众号
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: