从url正文请求转换为UTF-8

时间:2017-09-27 00:52:12

标签: javascript node.js meteor request cheerio

首先,英语不是我的母语。我希望你能理解我。

当我尝试使用cheerio包刮取URL时出现问题。问题在于,当我获得数据值时,我最终会得到Manuel Aristar�n之类的符号。我想看看这个特殊的角色,最后得到正确的重音字符,例如Manuel Aristarán。这些数据存储在json中。

一切正常,唯一的问题是特殊字符。

我正在使用铁路由器构建的路由器运行刮刀。也许我必须设置一个标题来编码字符串,我真的不知道。我会感谢你的任何建议和帮助。

这是我为提取和存储信息而运行的代码:

Router.route('/scraper/', function(){
  this.response.setHeader( 'Access-Control-Allow-Origin', '*' );
  this.response.setHeader( 'Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE' );
  this.response.setHeader( 'Access-Control-Allow-Headers', 'Content-Type, X-Requested-With, x-request-metadata' );
  this.response.setHeader( 'Access-Control-Allow-Credentials', true );

  var url = 'https://scholar.google.cl/citations?user=LINI0EUAAAAJ';
  request(url, async function(error, response, html){

    console.log(html);

    if(!error){
      var $ = cheerio.load(html);

      var autor;

      var json_pre = {  
                        autor : ""
                     };

      $('#gsc_prf_in').filter(function(){
        var data = $(this);
        autor = data.text().trim();
        json_pre.autor = autor;
      })

    }
    console.log(json_final);
  })

}, {where : "server"});

//expected output: {  
              autor : "Manuel Aristarán"
          };

//real output: {  
              autor : "Manuel Aristar�n"
          };

我正在抓取的原始页面有charset = utf-8标题,但是当我使用请求(url,response,html)方法时。当我用console.log(html)标题显示它时,这个html会自动更改为charset = ISO-8859-1,并显示带有特殊替换字符的正文 。

html原始页面

enter image description here

来自请求方法的

console.log(html)

enter image description here

0 个答案:

没有答案