广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Node.js抓取网站中文乱码解决办法
  • 845
分享到

Node.js抓取网站中文乱码解决办法

摘要

问题:node.js抓取网站中文乱码 async function gethtml(){ let res = await axiOS.get(publicPath+"/pic

问题:node.js抓取网站中文乱码

async function gethtml(){
    let res = await axiOS.get(publicPath+"/pic/")
    console.log(res)
}

如上代码,axios默认是以utf8的方式去解码html
由于原网页的编码方式是gb2312 控制台打印中文乱码

_G��ԭ��_����ͼƬ��</b></a> </h3>\r\n' +
'<p> ������ĩ�ա������ף��ܽ��׵�һ����־�ϸ裬����ĩ�ռ��������ף�G����������ͼƬ�ף��׳���Ϊ�����Ǹ����ϴ��� ���������
����������Σ����Ÿ��Լ�һЩ��������Ҫ�ñ��˰�����������״ݻ١��ܽ�������һ�ײ�ͬ����... </p>\r\n' +
`<span class="spanimg1">���ࣺ

node.js抓取网站中文乱码解决办法

stream尝试了很多种方式都无效,最后想到流请求

我们以流的方式去请求网页,因为流都是二进制数据,当我们获取到所有的二进制数据后,将其以原网页的编码方式去解码即可!

步骤
1.引入 iconv-lite
npm i iconv-lite

const axios = require('axios')
const cheerio = require('cheerio')
const iconv = require('iconv-lite')
//封装请求html方法
async function getHtml(url){
    let res = await axios.get(
         url,{
         responseType: 'stream'
    })
    return new Promise(resolve=>{
        let chunks = []
        res.data.on('data',chunk=>{
            chunks.push(chunk)
        })
        res.data.on('end',()=>{
            let buffer = Buffer.concat(chunks)
            let str = iconv.decode(buffer,'gb2312')
            resolve(str)
        }) 
    })
}

getHtml用于发送流请求
在函数内部封装了promise,
promise里面的res.data是一个可读流当获取到流数据时,我们及将其添加到chunks数组
流数据获取完毕后,将二进制数据连接,并设置解码方式为gb2312
最好用cheerio封装一下

async function getData(){
    const html = await getHtml(publicPath+"/pic/")
    const $ = cheerio.load(html)
    console.log($.html())
}
getData()

解码后的数据

七里香》吉他谱,周杰伦的经典代表作品,七里香吉他六线谱,原调bE选调C,CAPO夹三品,完整版共五张弹唱图
片谱。感谢老姚吉他编配,并同步《七里香》吉他弹唱教学视频,琴友们可以跟随老师的示范讲解练习起来。 曲... </p>
<span class="spanimg1">分类: <a href="/geshou/Cdiaodanchangpu_1258_1.html" rel="external nofollow"  target="_blank">C调弹唱谱</a>  <a href="/geshou/jitajiaoxueshipin_5348_1.html" rel="external nofollow"  target="_blank">吉他教学视频</a>  </span> <span class="spanimg2">来源:未知 </span> <span class="spanimg3">2020-12-25</span>

以上就是Node.js抓取网站中文乱码解决办法的详细内容,更多关于Node.js抓取网站中文乱码解决办法的资料请关注编程网其它相关文章!

--结束END--

本文标题: Node.js抓取网站中文乱码解决办法

本文链接: https://www.lsjlt.com/news/196724.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Node.js抓取网站中文乱码解决办法
    问题:Node.js抓取网站中文乱码 async function getHtml(){ let res = await axios.get(publicPath+"/pic...
    99+
    2023-02-18
    Node.js抓取网站中文乱码解决办法 Node.js抓取网站编码方式 Node.js 中文乱码
  • Node.js抓取中文网页乱码问题和解决方法
    Node.js 抓取非 utf-8 的中文网页时会出现乱码问题,比如网易的首页编码是 gb2312,抓取时会出现乱码 var request = require('request') var url...
    99+
    2022-06-04
    乱码 解决方法 中文
  • VB.NET中抓取网页乱码怎么办
    这篇文章将为大家详细讲解有关VB.NET中抓取网页乱码怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。举一个小案例如下。以下为VB.Net抓取网页的函数LobDotCn  注:url_Lin...
    99+
    2023-06-17
  • Python中matplotlib中文乱码解决办法
    Matplotlib是Python的一个很好的绘图包,但是其本身并不支持中文(貌似其默认配置中没有中文字体),所以如果绘图中出现了中文,就会出现乱码。 matplotlib绘制图像有中文标注时会有乱码问题。...
    99+
    2022-06-04
    乱码 解决办法 中文
  • 解决远程页面抓取中的乱码方法步骤
    本篇内容介绍了“解决远程页面抓取中的乱码方法步骤”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  ff提供...
    99+
    2022-10-19
  • java读取中文乱码解决方法
    Java读取文本文件(例如csv文件、txt文件等),遇到中文就变成乱码。读取代码如下:List lines=new ArrayList(); BufferedReader br = new BufferedReader(new F...
    99+
    2018-10-05
    java 乱码
  • php读取word乱码的解决办法
    这篇文章将为大家详细讲解有关php读取word乱码的解决办法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。打开相应的PHP代码文件。通过com调用word组件,代码如“new COM( &q...
    99+
    2023-06-25
  • LoadRunner中文出现乱码的解决办法
    录制选项,高级,支持字符集,UTF-8。一般情况下不需要开启此选项,否则在Submit里会出现有乱码。如果未开启此功能还出现乱码,可尝试开启此选项。如果开启此选项还是有乱码,且乱码处的内容你需要进行参数化,可使用lr_convert_str...
    99+
    2023-06-05
  • java中FileOutputStream中文乱码问题解决办法
    java中FileOutputStream中文乱码问题解决办法使用FileOutputStream序列化可以直接向文件写入文本内容,代码如下:FileOutputStream outStream = new FileOutputStream...
    99+
    2023-05-31
    java fileoutputstream 乱码
  • Android Retrofit 中文乱码问题的解决办法
    Android Retrofit 中文乱码问题的解决办法使用retrofit和rxjava,提交数据时需注意,当数据中有中文时,传到后台,可能会是乱码,需处理:解决:GET请求改成POST;参数Field改成Query加上@FormUrlE...
    99+
    2023-05-30
    android retrofit 中文乱码
  • PHP json_encode中文乱码问题的解决办法
    下面的PHP代码可以解决以下问题:1.json_encode UTF8码中文后的字符串不可阅读2.json_encode 多级数组中文乱码问题3.json_encode 数组中包含换...
    99+
    2022-11-15
    PHP json_encode 中文乱码
  • Linux 中unzip解压时中文乱码的解决办法
    Linux 中unzip解压时中文乱码的解决办法 当我们在linux中解压一个含有中文名字的压缩包如“资料.zip”时,如果直接使用如下的命令,将会出现中文乱码。 unzip 资料.zip 主要的原因...
    99+
    2022-06-04
    乱码 解决办法 中文
  • java读取文件中文乱码解决方法介绍
    Java读取文本文件(例如csv文件、txt文件等),遇到中文就变成乱码。(推荐:java视频教程)读取代码如下:List lines=new ArrayList(); BufferedReader br = new Buffere...
    99+
    2020-12-12
    java基础 java
  • oracle安装数据库中文乱码解决办法
    解决办法1:Linux下安装Oracle11g中文乱码Linux下安装Oracle11g,安装界面乱码问题解决方法:解决安装时中文是"囗囗囗囗囗囗囗囗"1.进入刚解压的database/stage/Comp...
    99+
    2022-10-18
  • PHP中文乱码分类及解决办法大全
    PHP+MYSQL做网站开发通常都会碰到浏览器输出中文字符时乱码,这个问题的原因主要是因为HTML内容编码,PHP文件编码和MySQL数据库编码这三者不一致造成的。下面我们以UTF-8为例简述一下如何统一...
    99+
    2022-05-19
    HTML MySQL PHP utf-8 中文乱码
  • php中var_dump乱码的解决办法
    这篇文章将为大家详细讲解有关php中var_dump乱码的解决办法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php var_dump乱码的解决办法:1、打开chrome浏览器,依次选择“选项-更多工具...
    99+
    2023-06-14
  • java读取txt文件乱码解决方法
    java读取txt文件,如果编码格式不匹配,就会出现乱码现象。所以读取txt文件的时候需要设置读取编码。txt文档编码格式都是写在文件头的,在程序中需要先解析文件的编码格式,获得编码格式后,在按此格式读取文件就不会产生乱码了。(推荐:jav...
    99+
    2016-06-11
    java
  • node 读取文件乱码的解决方法
    小编给大家分享一下node 读取文件乱码的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! n...
    99+
    2022-10-19
  • node.js输出中文乱码如何解决
    这篇文章主要介绍“node.js输出中文乱码如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“node.js输出中文乱码如何解决”文章能帮助大家解决问题。node.js输出中文乱码的解决办法:1...
    99+
    2023-07-04
  • python抓取并保存html页面时乱码问题的解决方法
    本文实例讲述了python抓取并保存html页面时乱码问题的解决方法。分享给大家供大家参考,具体如下: 在用Python抓取html页面并保存的时候,经常出现抓取下来的网页内容是乱码的问题。出现该问题的原因...
    99+
    2022-06-04
    乱码 解决方法 并保存
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作