Node.js 抓取非 utf-8 的中文網頁時會出現亂碼問題,例如網易的首頁編碼是 gb2312,抓取時會出現亂碼
request(url, function (err, res, body) {
console.log(body)
})
安裝
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)
})
亂碼問題解決
使用 cheerio 解析 HTML
cheerio 可以簡單粗暴的理解為伺服器端 jQuery 選擇器,有了它,比正則要更加直觀許多
安裝
解決 cheerio .html() 「亂碼」問題
查閱文件可知,可以關閉這個轉換實體編碼的功能
函數請求(url、回呼){
var 選項 = {
網址:網址,
編碼:空,
標題:標題
}
originRequest(選項,回呼)
}
var url = 'http://www.163.com'
請求(url,函數(錯誤,res,正文){
var html = iconv.decode(body, 'gb2312')
var $ = Cheerio.load(html, {decodeEntities: false})
console.log($('h1').text())
console.log($('h1').html())
})