node爬虫,中文乱码处理办法


背景:

在使用nodejs做爬虫时候,常遇到中文网页,即网页头部含有以下标签

如 : <meta charset="gbk" />

这时候在使用http、request、或者axios时候抓取到的网页内容基本都会是乱码


解决办法:

用axios举例

1
2
3
4
5
6
7
8
9
const iconv = require('iconv-lite');
const axios = require('axios');

axios.get('http://xxx.xxx.com', {
responseType: 'arraybuffer', // 以arraybuffer类型返回数据
}).then(res => {
var data = iconv.decode(res.data, 'gbk'); // 返回的数据通过iconv模块转换一下,其中‘gbk’为网页头部meta的类型
console.log(data); //此时data内的中文不在是乱码了
})

其他:

ArrayBuffer:对象用来表示通用的、固定长度的原始二进制数据缓冲区。ArrayBuffer 不能直接操作,而是要通过类型数组对象或 DataView 对象来操作,它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写缓冲区的内容。more>>

iconv-lite:Pure JS character encoding conversion.more>>