Saya menggunakan superagent + cheerio untuk merangkak *produk Dong, tetapi pengepala respons Cina yang tidak betul yang dikembalikan adalah seperti berikut
Ia dimampatkan oleh gzip, tetapi wajarlah bahawa superagen akan menyahmampatnya secara lalai
*Alamat produk Timur https://item.jd.com/5025518.html
Saya ambil tajuk produk dan hasilnya adalah seperti berikut
Kod teras adalah seperti berikut:
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);
})
})
})
Ini bukan kod bercelaru Jika kod bercelaru, semuanya bercelaru.
Saya terus menggunakan Posmen untuk meminta alamat anda, dan situasi anda tidak muncul, jadi saya menilai bahawa ia adalah masalah dengan IDE atau editor teks anda, dan tetapkan format kepada utf-8.