欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Node.js抓取網(wǎng)站中文亂碼解決辦法

 更新時(shí)間:2023年02月18日 15:04:53   作者:zihanzy  
這篇文章主要介紹了Node.js抓取網(wǎng)站中文亂碼解決辦法,需要的朋友可以參考下

問題:Node.js抓取網(wǎng)站中文亂碼

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

如上代碼,axios默認(rèn)是以u(píng)tf8的方式去解碼html
由于原網(wǎng)頁(yè)的編碼方式是gb2312 控制臺(tái)打印中文亂碼

_G?????_????????</b></a> </h3>\r\n' +
'<p> ???????????????????????????????裬?????????????????G??????????????????????????????????? ?????????
??????????Σ??????????Щ???????????????????????????????????????????????... </p>\r\n' +
`<span class="spanimg1">????

Node.js抓取網(wǎng)站中文亂碼解決辦法

stream嘗試了很多種方式都無(wú)效,最后想到流請(qǐng)求

我們以流的方式去請(qǐng)求網(wǎng)頁(yè),因?yàn)榱鞫际嵌M(jìn)制數(shù)據(jù),當(dāng)我們獲取到所有的二進(jìn)制數(shù)據(jù)后,將其以原網(wǎng)頁(yè)的編碼方式去解碼即可!

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

const axios = require('axios')
const cheerio = require('cheerio')
const iconv = require('iconv-lite')
//封裝請(qǐng)求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用于發(fā)送流請(qǐng)求
在函數(shù)內(nèi)部封裝了promise,
promise里面的res.data是一個(gè)可讀流當(dāng)獲取到流數(shù)據(jù)時(shí),我們及將其添加到chunks數(shù)組。
流數(shù)據(jù)獲取完畢后,將二進(jìn)制數(shù)據(jù)連接,并設(shè)置解碼方式為gb2312
最好用cheerio封裝一下

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

解碼后的數(shù)據(jù)

七里香》吉他譜,周杰倫的經(jīng)典代表作品,七里香吉他六線譜,原調(diào)bE選調(diào)C,CAPO夾三品,完整版共五張彈唱圖
片譜。感謝老姚吉他編配,并同步《七里香》吉他彈唱教學(xué)視頻,琴友們可以跟隨老師的示范講解練習(xí)起來(lái)。 曲... </p>
<span class="spanimg1">分類: <a href="/geshou/Cdiaodanchangpu_1258_1.html" rel="external nofollow"  target="_blank">C調(diào)彈唱譜</a>  <a href="/geshou/jitajiaoxueshipin_5348_1.html" rel="external nofollow"  target="_blank">吉他教學(xué)視頻</a>  </span> <span class="spanimg2">來(lái)源:未知 </span> <span class="spanimg3">2020-12-25</span>

以上就是Node.js抓取網(wǎng)站中文亂碼解決辦法的詳細(xì)內(nèi)容,更多關(guān)于Node.js抓取網(wǎng)站中文亂碼解決辦法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解如何在Node.js的httpServer中接收前端發(fā)送的arraybuffer數(shù)據(jù)

    詳解如何在Node.js的httpServer中接收前端發(fā)送的arraybuffer數(shù)據(jù)

    這篇文章主要介紹了詳解如何在Node.js的httpServer中接收前端發(fā)送的arraybuffer數(shù)據(jù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-11-11
  • Node.js API詳解之 string_decoder用法實(shí)例分析

    Node.js API詳解之 string_decoder用法實(shí)例分析

    這篇文章主要介紹了Node.js API詳解之 string_decoder用法,結(jié)合實(shí)例形式分析了Node.js API中string_decoder的功能、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • 深入了解 Node的多進(jìn)程服務(wù)實(shí)現(xiàn)

    深入了解 Node的多進(jìn)程服務(wù)實(shí)現(xiàn)

    本文主要介紹了Node的多進(jìn)程服務(wù)實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • node封裝一個(gè)控制臺(tái)進(jìn)度條插件???????詳情

    node封裝一個(gè)控制臺(tái)進(jìn)度條插件???????詳情

    這篇文章主要介紹了node封裝一個(gè)控制臺(tái)進(jìn)度條插件???????詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • nodejs切換版本使用最新教程(不需要卸載重裝)

    nodejs切換版本使用最新教程(不需要卸載重裝)

    有時(shí)候需要運(yùn)行不同的項(xiàng)目,node版本不一致會(huì)導(dǎo)致不少問題,特別是最新版本對(duì)應(yīng)的一些插件,由于語(yǔ)法等原因?qū)е虏灰欢嫒莸桶姹?這樣運(yùn)行低版本環(huán)境的項(xiàng)目的時(shí)候很多坑,這篇文章主要給大家介紹了關(guān)于nodejs切換版本使用(不需要卸載重裝)的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • 分析node事件循環(huán)和消息隊(duì)列

    分析node事件循環(huán)和消息隊(duì)列

    node的好處毋庸置疑,事件驅(qū)動(dòng),異步非阻塞I/O,以及處理高并發(fā)的能力深入人心,因此大家喜歡用node做一些小型后臺(tái)服務(wù)或者作為中間層和其他服務(wù)配合完成一些大型應(yīng)用場(chǎng)景。
    2021-06-06
  • node.js事件循環(huán)機(jī)制及與js區(qū)別詳解

    node.js事件循環(huán)機(jī)制及與js區(qū)別詳解

    這篇文章主要為大家介紹了node.js事件循環(huán)機(jī)制及與js區(qū)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Node.js 使用 gRPC從定義到實(shí)現(xiàn)過程詳解

    Node.js 使用 gRPC從定義到實(shí)現(xiàn)過程詳解

    gRPC是一個(gè)高性能、開源的遠(yuǎn)程過程調(diào)用(RPC)框架,由 Google 開發(fā),它支持多種編程語(yǔ)言,旨在簡(jiǎn)化和優(yōu)化分布式系統(tǒng)中的服務(wù)通信,本文給大家介紹Node.js 使用 gRPC從定義到實(shí)現(xiàn)過程,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • 詳解nodejs爬蟲程序解決gbk等中文編碼問題

    詳解nodejs爬蟲程序解決gbk等中文編碼問題

    本篇文章主要介紹了nodejs爬蟲程序解決gbk等中文編碼問題,解決了網(wǎng)頁(yè)的編碼與nodejs默認(rèn)編碼不一致造成的亂碼問題,有興趣的可以了解一下
    2017-04-04
  • node安裝及環(huán)境變量配置詳細(xì)教程

    node安裝及環(huán)境變量配置詳細(xì)教程

    在很多前端項(xiàng)目中都需要配置node的環(huán)境變量,下面這篇文章主要給大家介紹了關(guān)于node安裝及環(huán)境變量配置的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07

最新評(píng)論