J'ai utilisé superagent + cheerio pour explorer les produits *Dong, mais les en-têtes de réponse chinois tronqués renvoyés sont les suivants
Il est compressé par gzip, mais il va de soi que superagent le décompressera par défaut
*Adresse du produit Est https://item.jd.com/5025518.html
J'ai pris le titre du produit et les résultats sont les suivants
Le code de base est le suivant :
var url = 'https://list.jd.com/list.html?cat=670,671,672' //京东电脑
var totalData = [] // 存储总数据
superagent.get(url).end(function (err, res) {
if (err) {
return console.error(err)
}
var topicUrls = []; // 页面里面的所有url
var $ = cheerio.load(res.text) // 拿到页面
$('#plist .gl-item').each(function (i, e) {
$e = $(e)
var href = 'https:' + $e.find('.p-img >a').attr('href') // 拿到所有url
topicUrls.push(href)
})
var ep = new eventproxy();//
//异步调用结束后,执行某些操作
ep.after('topic_html', topicUrls.length, function (topics) { //接收res.text
topics = topics.map(function (topicHtml) {
var $ = cheerio.load(topicHtml, {decodeEntities: false});
return ({
title: $('.sku-name').text().trim()
});
});
totalData.push(topics)
console.log(totalData);
})
topicUrls.forEach(function (e) {
superagent.get(e).end(function (err, res) {
ep.emit('topic_html', res.text);
})
})
})
Ce n'est pas du code tronqué. S'il s'agit d'un code tronqué, tout est foiré. Cela devrait être un problème avec votre encodage.
J'ai directement utilisé Postman pour demander votre adresse, et votre situation n'est pas apparue, j'ai donc jugé qu'il s'agissait d'un problème avec votre IDE ou votre éditeur de texte, et j'ai défini le format sur utf-8.