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

 更新时间:2022年06月28日 08:57:50   作者:天问  
这篇文章主要为大家介绍了nodejs+axios爬取html出现中文乱码示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、乱码原因

当使用 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中文乱码的资料请关注脚本之家其它相关文章!

相关文章

  • 一文详解Node.contain 函数兼容处理

    一文详解Node.contain 函数兼容处理

    这篇文章主要为大家介绍了Node.contain 函数兼容处理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析

    基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析

    这章的目的是为了把前面所学习的内容整合一下,这个示例完成一个简单图书管理模块,因为中间需要使用到Bootstrap这里先介绍Bootstrap
    2017-01-01
  • Node.js中的Buffer对象及创建方式

    Node.js中的Buffer对象及创建方式

    node.js提供了一个Buffer对象来提供对二进制数据的操作,Buffer 类的实例类似于整数数组,但 Buffer 的大小是固定的、且在 V8 堆外分配物理内存。本文给大家介绍Node.js中的Buffer对象及创建方式,感兴趣的朋友一起看看吧
    2022-01-01
  • 使用Node.js处理前端代码文件的编码问题

    使用Node.js处理前端代码文件的编码问题

    这篇文章主要介绍了使用Node.js处理前端代码文件的编码问题的方法,Node自带的相关类库处理编码方面的问题时还是比较得心应手的,需要的朋友可以参考下
    2016-02-02
  • 如何让node运行es6模块文件及其原理详解

    如何让node运行es6模块文件及其原理详解

    这篇文章主要介绍了如何让node运行es6模块文件及其原理详解,详细的介绍了2种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • Node.js 中的服务器相关概念(常见的服务器任务)

    Node.js 中的服务器相关概念(常见的服务器任务)

    Node.js 中,服务器的创建与管理是非常重要的内容,Node.js 的非阻塞 I/O 特性使得它特别适合处理高并发的请求,本文将介绍一些与 Node.js 服务器相关的基本概念,包括 HTTP 服务器、请求和响应、路由、以及如何处理常见的服务器任务,感兴趣的朋友一起看看吧
    2025-04-04
  • Node.js数据库操作之查询MySQL数据库(二)

    Node.js数据库操作之查询MySQL数据库(二)

    这篇文章主要介绍了Node.js数据库操作之查询MySQL数据库的相关资料,文中介绍的非常详细,对大家学习或者使用mysql能带来一定的帮助,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • npm配置国内镜像资源+淘宝镜像的方法

    npm配置国内镜像资源+淘宝镜像的方法

    这篇文章主要介绍了npm配置国内镜像资源+淘宝镜像的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • 从零开始学习Node.js系列教程二:文本提交与显示方法

    从零开始学习Node.js系列教程二:文本提交与显示方法

    这篇文章主要介绍了Node.js文本提交与显示方法,结合实例形式分析了nodejs基于http的文本提交、传输与显示相关操作技巧,需要的朋友可以参考下
    2017-04-04
  • Node.js中Swagger的使用指南详解

    Node.js中Swagger的使用指南详解

    Swagger(目前用OpenAPI Specification代替)是一个用于设计、构建、记录和使用REST API的强大工具,本文将探讨使用Swagger的一些关键技巧,需要的可以参考一下
    2024-01-01

最新评论