node.js - Gunakan superagent untuk menangkap aksara laman web UTF-8 yang kacau
天蓬老师
天蓬老师 2017-07-06 10:35:50
0
2
1404

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


})
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

membalas semua(2)
phpcn_u1582

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan