首先,英语不是我的母语。我希望你能理解我。
当我尝试使用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原始页面
来自请求方法的console.log(html)