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

Node.js抓取網站中文亂碼解決辦法

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

問題: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用于發(fā)送流請求
在函數內部封裝了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抓取網站中文亂碼解決辦法的資料請關注腳本之家其它相關文章!

相關文章

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

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

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

    如何讓node運行es6模塊文件及其原理詳解

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

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

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

    一文詳解nodejs的path模塊使用

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

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

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

    預防NodeJS命令注入的方法詳解

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

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

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

    詳解使用Node.js 將txt文件轉為Excel文件

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

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

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

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

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

最新評論

古丈县| 南木林县| 南昌县| 淮南市| 元阳县| 饶阳县| 杭锦旗| 平和县| 铜山县| 泗水县| 井研县| 资中县| 云浮市| 蒙阴县| 绍兴市| 石景山区| 临漳县| 阿拉尔市| 霍州市| 康保县| 桐梓县| 揭阳市| 北辰区| 开远市| 萝北县| 边坝县| 灌云县| 三江| 偃师市| 中超| 漳州市| 班戈县| 白城市| 焦作市| 绵竹市| 盖州市| 烟台市| 通道| 新巴尔虎左旗| 永胜县| 普洱|