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

Node.js抓取中文網(wǎng)頁(yè)亂碼問(wèn)題和解決方法

 更新時(shí)間:2015年02月10日 09:54:50   投稿:junjie  
這篇文章主要介紹了Node.js抓取中文網(wǎng)頁(yè)亂碼問(wèn)題和解決方法,本文講解了使用一些開(kāi)源庫(kù)解決抓取中出現(xiàn)的亂碼問(wèn)題,需要的朋友可以參考下

Node.js 抓取非 utf-8 的中文網(wǎng)頁(yè)時(shí)會(huì)出現(xiàn)亂碼問(wèn)題,比如網(wǎng)易的首頁(yè)編碼是 gb2312,抓取時(shí)會(huì)出現(xiàn)亂碼

復(fù)制代碼 代碼如下:

var request = require('request') 
var url = 'http://www.163.com'

request(url, function (err, res, body) { 
    console.log(body)
})


可以使用 iconv-lite 來(lái)解決

安裝

復(fù)制代碼 代碼如下:

npm install iconv-lite 

同時(shí)我們順帶把 user-agent 修改一下,以防網(wǎng)站屏蔽:
復(fù)制代碼 代碼如下:

var originRequest = require('request') 
var iconv = require('iconv-lite') 
var headers = { 
  'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36'
}

function request (url, callback) { 
  var options = {
    url: url,
    encoding: null,
    headers: headers
  }
  originRequest(options, callback)
}

request(url, function (err, res, body) { 
    var html = iconv.decode(body, 'gb2312')
    console.log(html)
})

亂碼問(wèn)題解決

使用 cheerio 解析 HTML

cheerio 可以簡(jiǎn)單粗暴的理解為服務(wù)器端 jQuery 選擇器,有了它,比正則要更加直觀許多

安裝

復(fù)制代碼 代碼如下:

npm install cheerio 
request(url, function (err, res, body) { 
    var html = iconv.decode(body, 'gb2312')
    var $ = cheerio.load(html)
    console.log($('h1').text())
    console.log($('h1').html())
})

輸出如下
復(fù)制代碼 代碼如下:

網(wǎng)易
网易

那么問(wèn)題來(lái)了,$('h1').html() 輸出的代碼是經(jīng)過(guò) Unicode 編碼的,網(wǎng)易變成了网易,給我們的字符處理帶來(lái)了一些麻煩

解決 cheerio .html() 「亂碼」問(wèn)題
查閱文檔可知,可以關(guān)閉這個(gè)轉(zhuǎn)換實(shí)體編碼的功能

復(fù)制代碼 代碼如下:

var $ = cheerio.load(html) 

改成
復(fù)制代碼 代碼如下:

var $ = cheerio.load(html, {decodeEntities: false})

即可,完整代碼如下:
復(fù)制代碼 代碼如下:

var originRequest = require('request') 
var cheerio = require('cheerio') 
var iconv = require('iconv-lite') 
var headers = { 
  'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36'
}

function request (url, callback) { 
  var options = {
    url: url,
    encoding: null,
    headers: headers
  }
  originRequest(options, callback)
}

var url = 'http://www.163.com'

request(url, function (err, res, body) { 
    var html = iconv.decode(body, 'gb2312')
    var $ = cheerio.load(html, {decodeEntities: false})
    console.log($('h1').text())
    console.log($('h1').html())
})

相關(guān)文章

  • nestjs搭建HTTP與WebSocket服務(wù)詳細(xì)過(guò)程

    nestjs搭建HTTP與WebSocket服務(wù)詳細(xì)過(guò)程

    這篇文章主要介紹了nestjs搭建HTTP與WebSocket服務(wù)詳細(xì)過(guò)程的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • node.js自動(dòng)上傳ftp的腳本分享

    node.js自動(dòng)上傳ftp的腳本分享

    這篇文章主要給大家介紹了一個(gè)關(guān)于node.js自動(dòng)上傳ftp腳本的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • NodeJS 創(chuàng)建目錄和文件的方法實(shí)例分析

    NodeJS 創(chuàng)建目錄和文件的方法實(shí)例分析

    這篇文章主要介紹了NodeJS 創(chuàng)建目錄和文件的方法,涉及node.js中fs模塊mkdir、writeFile及目錄判斷existsSync等方法的功能與相關(guān)使用技巧,需要的朋友可以參考下
    2023-04-04
  • 淺析node.js中close事件

    淺析node.js中close事件

    本文簡(jiǎn)單介紹了http.ServerRespose對(duì)象的close事件,并給出了相關(guān)實(shí)例,推薦給需要的小伙伴參考下吧。
    2014-11-11
  • 輕松創(chuàng)建nodejs服務(wù)器(2):nodejs服務(wù)器的構(gòu)成分析

    輕松創(chuàng)建nodejs服務(wù)器(2):nodejs服務(wù)器的構(gòu)成分析

    這篇文章主要介紹了輕松創(chuàng)建nodejs服務(wù)器(2):nodejs服務(wù)器的構(gòu)成分析,本文是對(duì)第一節(jié)中簡(jiǎn)單服務(wù)器的代碼進(jìn)行分析總結(jié),需要的朋友可以參考下
    2014-12-12
  • Node.js API詳解之 timer模塊用法實(shí)例分析

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

    這篇文章主要介紹了Node.js API詳解之 timer模塊用法,結(jié)合實(shí)例形式分析了Node.js API中timer模塊基本功能、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • node內(nèi)存泄漏排查與修復(fù)過(guò)程

    node內(nèi)存泄漏排查與修復(fù)過(guò)程

    之前開(kāi)發(fā)了一個(gè)node接口,該接口使用canvas繪制產(chǎn)品圖提供給java端使用,在運(yùn)行了一段時(shí)間后發(fā)現(xiàn)了內(nèi)存泄漏問(wèn)題,本文淺記下修復(fù)過(guò)程,文章通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • Node.js 去掉種子(torrent)文件里的邪惡信息

    Node.js 去掉種子(torrent)文件里的邪惡信息

    torrent文件,又被稱為種子,原來(lái)只是用于記錄 bt下載當(dāng)中所需信息的一種文件。但是隨著互聯(lián)網(wǎng)的極大發(fā)展,一些人士將一些邪惡的信息注入到了小小的 torrent文件當(dāng)中,種子從此變成了邪惡的代名詞。
    2015-03-03
  • node.js中的http.response.write方法使用說(shuō)明

    node.js中的http.response.write方法使用說(shuō)明

    這篇文章主要介紹了node.js中的http.response.write方法使用說(shuō)明,本文介紹了http.response.write的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • Node.js API詳解之 vm模塊用法實(shí)例分析

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

    這篇文章主要介紹了Node.js API詳解之 vm模塊用法,結(jié)合實(shí)例形式分析了Node.js API中vm模塊基本功能、函數(shù)、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2020-05-05

最新評(píng)論

禄劝| 太仓市| 涞源县| 广水市| 株洲县| 遂川县| 于都县| 阜阳市| 沅陵县| 南江县| 农安县| 洪泽县| 安康市| 淮北市| 宁河县| 延安市| 永和县| 手游| 洞头县| 汶川县| 永安市| 玉溪市| 清徐县| 阿鲁科尔沁旗| 道孚县| 阳曲县| 临泉县| 麻栗坡县| 鲁山县| 大竹县| 岳西县| 湖北省| 永吉县| 达尔| 卓资县| 高台县| 达州市| 安福县| 桃园县| 筠连县| 云林县|