cari

Rumah  >  Soal Jawab  >  teks badan

node.js - Gunakan superagent untuk menangkap aksara laman web UTF-8 yang kacau

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);
        })
    })


})
天蓬老师天蓬老师2700 hari yang lalu1386

membalas semua(2)saya akan balas

  • phpcn_u1582

    phpcn_u15822017-07-06 10:37:50

    Ini bukan kod bercelaru Jika kod bercelaru, semuanya bercelaru.

    balas
    0
  • 代言

    代言2017-07-06 10:37:50

    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.

    balas
    0
  • Batalbalas