Node爬虫利用Jquery解析元素,利用 iconv.decode之后还是乱码

最近在学习Node爬虫,其中就用到了Jquery解析页面元素,在爬取页面的时候利用 iconv.decode之后还是乱码,那么首先要搞清楚下面的内容问题就迎刃而解了。

const Decodebody = iconv.decode(body, 'gb2312')
这行代码的意思是对爬虫获取得到的response响应内容进行解码。

const $ = cheerio.load(Decodebody )
这行代码的意思是将解析得到的内容转换为Dom树,方便利用Jquery进行解析。

问题:

利用iconv.decode(body,'gb2312')进行编码之后,发现爬虫返回的结果还是乱码

解决:

那么这个时候需要用到Buffer流进行编码和解码了,至于为什么要用到这个,见Buffer解析
使用代码如下:

const options = {
    hostname: 'baidu.com',
    port: 80,
    method: 'GET',
    headers: {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER",
    }
};
http.get(options, function (res) {
    var bufferHelper = new BufferHelper();
    res.on('data', function (chunk) {
        bufferHelper.concat(chunk);
    });
    res.on('end', function () {
    let result = iconv.decode(bufferHelper.toBuffer(), 'GBK');  //这里可以使用正则表达式对网页进行解析
     //上面代码得到的html网页源代码
    console.log(result) // 打印出来就不会显示乱码了
    const $ = cheerio.load(result)
     //上面代码得到的是Dom树,方便用jQuery进行解析
    });
})

http.get用法
Jquery使用案例
利用以上写法,基本遇到所有页面都可以正确地进行解码了,希望大家保存好这段代码,在利用Node.js爬取页面的时候,注意使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值