最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間: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)是以utf8的方式去解碼html
由于原網(wǎng)頁的編碼方式是gb2312 控制臺打印中文亂碼

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

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

stream嘗試了很多種方式都無效,最后想到流請求

我們以流的方式去請求網(wǎng)頁,因為流都是二進(jìn)制數(shù)據(jù),當(dāng)我們獲取到所有的二進(jìn)制數(shù)據(jù)后,將其以原網(wǎng)頁的編碼方式去解碼即可!

步驟
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用于發(fā)送流請求
在函數(shù)內(nèi)部封裝了promise,
promise里面的res.data是一個可讀流當(dāng)獲取到流數(shù)據(jù)時,我們及將其添加到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í)起來。 曲... </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">來源:未知 </span> <span class="spanimg3">2020-12-25</span>

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

相關(guān)文章

  • 利用Node.js和MySQL實現(xiàn)創(chuàng)建API服務(wù)器

    利用Node.js和MySQL實現(xiàn)創(chuàng)建API服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了如何使用Node.js和MySQL創(chuàng)建API服務(wù)器的步驟,這也是從前端邁向全棧的一個開始,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2024-01-01
  • 如何讓node運(yùn)行es6模塊文件及其原理詳解

    如何讓node運(yùn)行es6模塊文件及其原理詳解

    這篇文章主要介紹了如何讓node運(yùn)行es6模塊文件及其原理詳解,詳細(xì)的介紹了2種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • node創(chuàng)建Vue項目步驟詳解

    node創(chuàng)建Vue項目步驟詳解

    在本篇文章里小編給大家整理的是關(guān)于node創(chuàng)建Vue項目步驟詳解內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-03-03
  • 一文詳解nodejs的path模塊使用

    一文詳解nodejs的path模塊使用

    這篇文章主要為大家介紹了nodejs的path模塊使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • node.js中的fs.existsSync方法使用說明

    node.js中的fs.existsSync方法使用說明

    這篇文章主要介紹了node.js中的fs.existsSync方法使用說明,本文介紹了fs.existsSync方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 預(yù)防NodeJS命令注入的方法詳解

    預(yù)防NodeJS命令注入的方法詳解

    Node.js和npm為前端生態(tài)中提供了統(tǒng)一的開發(fā)語言、強(qiáng)大的包管理和模塊生態(tài)系統(tǒng)、靈活的構(gòu)建工具和任務(wù)自動化、以及豐富的前端框架和庫等等,本文給大家介紹了如何預(yù)防NodeJS命令注入,文中有詳細(xì)的代碼講解,需要的朋友可以參考下
    2023-12-12
  • nodejs 實現(xiàn)MQTT協(xié)議的服務(wù)器端和客戶端的雙向交互的過程

    nodejs 實現(xiàn)MQTT協(xié)議的服務(wù)器端和客戶端的雙向交互的過程

    這篇文章主要介紹了nodejs 實現(xiàn)MQTT協(xié)議的服務(wù)器端和客戶端的雙向交互的過程,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • 詳解使用Node.js 將txt文件轉(zhuǎn)為Excel文件

    詳解使用Node.js 將txt文件轉(zhuǎn)為Excel文件

    這篇文章主要介紹了詳解使用Node.js 將txt文件轉(zhuǎn)為Excel文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • node.js中的events.emitter.removeAllListeners方法使用說明

    node.js中的events.emitter.removeAllListeners方法使用說明

    這篇文章主要介紹了node.js中的events.emitter.removeAllListeners方法使用說明,本文介紹了events.emitter.removeAllListeners 的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 基于Koa2寫個腳手架模擬接口服務(wù)的方法

    基于Koa2寫個腳手架模擬接口服務(wù)的方法

    這篇文章主要介紹了基于Koa2寫個腳手架模擬接口服務(wù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11

最新評論

景洪市| 黔东| 新巴尔虎右旗| 荣昌县| 永川市| 福州市| 嘉定区| 雷山县| 甘肃省| 巍山| 阿图什市| 常宁市| 上饶市| 图木舒克市| 甘德县| 卓资县| 永州市| 绥芬河市| 北碚区| 安仁县| 沧州市| 彝良县| 富阳市| 固安县| 锡林浩特市| 攀枝花市| 新泰市| 阜城县| 贵州省| 仁布县| 万年县| 广安市| 阳朔县| 松江区| 沂南县| 汶川县| 连江县| 富民县| 东光县| 怀安县| 和林格尔县|