首页 > 解决方案 > Node-Crawler - 如何显示正常字符数据?

问题描述

我正在尝试从包含带有 node.js 的 html 的网站获取一些数据。但是,响应是乱码,例如��ӭǰ���Ա���ʵ�����̣�ѡ��Apple。

谁能告诉我我该怎么做才能解决这个问题?

非常感谢!

我已经尝试如下。

网站 url在此处输入链接描述

const urlLib = require('url');
const dataLib = require('./data');

dataLib.getUrl(website url,(buffer)=>{
console.log('done',buffer.toString('utf-8'));
 },()=>{
  console.log('error')
})

这是data.js

const urlLib = require('url');

exports.getUrl = function(sUrl, success, error) {

_req(sUrl);

function _req(sUrl){


let obj = urlLib.parse(sUrl);
let mod = null;
if (obj.protocol == 'http:') {
  mod = require('http')
  } else {
  mod = require('https')
}

let req = mod.request({
  hostname: obj.hostname,
  path: obj.path
}, res => {
  if (res.statusCode == 200) {
    let arr = [];
    res.on('data', (buffer) => {
      arr.push(buffer)
    });

    res.on('end', () => {
      let b = Buffer.concat(arr)
      success && success(b)
    })

  } else if (res.statusCode == 301 || res.statusCode == 302) {
    _req(res.headers['location'])  
  } else {
    console.log(res.statusCode)
    error && error();
  }

 })

  req.on('error', (err) => { 
    console.log( err)
    error && error(err)
  })

 req.end()
 }

}

标签: javascriptnode.jsweb-crawler

解决方案


似乎您正在获取数据,但您无法对其进行解码。像��ӭǰ���Ա���ʵ�����̣�ѡ�� 这样的乱码字符通常就是这种情况。

我注意到您指定'utf-8'buf.toString(). 它应该是'utf8'(不带连字符)。


推荐阅读