nodejs+axios爬取html出现中文乱码并解决示例

 更新时间:2022年06月28日 08:57:50   作者:天问  
这篇文章主要为大家介绍了nodejs+axios爬取html出现中文乱码示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

一、乱码原因

当使用 nodejs + axios 来爬取某个 url 对应的 html 时,出现中文乱码。

在 HTML 页面的 head 中没有设置 <meta charset="UTF-8"> ,而 html 页面默认是 GBK 的编码。

使用 axios 发送请求 responseEncoding 默认是 utf8,造成编码不一致,导致最后获取到的 html 内容出现中文乱码。

二、解决办法

以二进制流的形式获取 HTML 内容,再对内容进行 GBK 编码解析。具体步骤如下:

  • 设置 axios 请求时的 responseType 为 arraybuffer;
  • 使用 TextDecoder 对象提供的方法对二进制流进行编码解析。

eg:

async function getHtml() {
  let res = await axios({
    url: "http://www.xxx.com",
    headers: {
      // ...
    },
    responseType: "arraybuffer", // 关键步骤
    responseEncoding: "utf8",
  });
  let { data } = res
  let utf8decoder = new TextDecoder("GBK"); // 关键步骤
  let html = utf8decoder.decode(data);
  console.log(html)
}

这样就能完美解决中文乱码的情况了。如果 HTML 设置的其他类型编码,只需要在 new TextDecoder() 实例化参数传入对应的编码即可。

API解读:

 TextDecoder 接口表示一个文本解码器,一个解码器只支持一种特定文本编码,例如: utf-8、iso-8859-2、koi8、cp1261,gbk 等等。解码器将字节流作为输入,并提供代码点流作为输出。

以上就是nodejs+axios解决html出现中文乱码示例的详细内容,更多关于nodejs axios解决html中文乱码的资料请关注程序员之家其它相关文章!

相关文章

  • NodeJS搭建HTTP服务器的实现步骤

    NodeJS搭建HTTP服务器的实现步骤

    NodeJS中用来创建服务的模块是http核心模块,本篇就来介绍关于使用http模块搭建HTTP服务器和客户端的方法,以及模块的基本 API,非常具有实用价值,需要的朋友可以参考下
    2018-10-10
  • nodejs使用node-xlsx生成excel的方法示例

    nodejs使用node-xlsx生成excel的方法示例

    这篇文章主要介绍了nodejs使用node-xlsx生成excel,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 深入解析Nodejs中的大文件读写

    深入解析Nodejs中的大文件读写

    这篇文章主要介绍了深入解析Nodejs中的大文件读写,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • 解析NodeJs的调试方法

    解析NodeJs的调试方法

    本文主要介绍了NodeJs调试的步骤,以及实例方法,具有一定的参考作用,需要的朋友可以看下
    2016-12-12
  • Node.js之IP地址和端口号问题

    Node.js之IP地址和端口号问题

    这篇文章主要介绍了Node.js之IP地址和端口号问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 详解nodejs中的异步迭代器

    详解nodejs中的异步迭代器

    这篇文章主要介绍了nodejs中的异步迭代器,对异步感兴趣的同学,可以参考下
    2021-05-05
  • Node.js + express实现上传大文件的方法分析【图片、文本文件】

    Node.js + express实现上传大文件的方法分析【图片、文本文件】

    这篇文章主要介绍了Node.js + express实现上传大文件的方法,结合实例形式分析了Node.js + express针对图片、文本文件上传操作实现方法及相关操作注意事项,需要的朋友可以参考下
    2019-03-03
  • 基于 Node.js 实现前后端分离

    基于 Node.js 实现前后端分离

    为了解决传统Web开发模式带来的各种问题,我们进行了许多尝试,但由于前/后端的物理鸿沟,尝试的方案都大同小异。痛定思痛,今天我们重新思考了“前后端”的定义,引入前端同学都熟悉的NodeJS,试图探索一条全新的前后端分离模式。
    2016-04-04
  • node将geojson转shp返回给前端的实现方法

    node将geojson转shp返回给前端的实现方法

    这篇文章主要介绍了node将geojson转shp返回给前端的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • npm?list输出结果包含extraneous标志记录分析

    npm?list输出结果包含extraneous标志记录分析

    这篇文章主要为大家介绍了npm?list输出结果包含extraneous标志记录分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01

最新评论

?


http://www.vxiaotou.com