Node-Crawler - Как показать нормальные символы данных? - PullRequest
0 голосов
/ 06 мая 2018

Я пытаюсь получить некоторые данные с веб-сайта, содержащего html с node.js. Однако ответ искажен, например, such ӭǰ ѡ Apple.

Может кто-нибудь сказать мне, как я могу сделать, чтобы решить это?

Большое спасибо!

Я пробовал, как показано ниже.

веб-сайт введите описание ссылки здесь

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

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

Вот данные.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()
 }

}

1 Ответ

0 голосов
/ 06 мая 2018

Похоже, вы получаете данные, но не можете их декодировать. Обычно это касается искаженных символов, таких как ӭǰ Ա ʵ ̣ ѡ .

Я заметил, что вы указываете 'utf-8' в качестве кодировки в buf.toString(). Это должно быть 'utf8' (без дефиса).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...