Rumah > hujung hadapan web > Soal Jawab bahagian hadapan > kod nodejs cheerio bercelaru

kod nodejs cheerio bercelaru

王林
Lepaskan: 2023-05-23 12:32:08
asal
706 orang telah melayarinya

Semasa proses penghantaran data, adalah mudah untuk menghadapi masalah watak bercelaru. Dalam proses menggunakan nodejs untuk merangkak data, cheerio sering digunakan untuk penghuraian dokumen. Walau bagaimanapun, kadangkala kandungan yang dihuraikan menggunakan cheerio akan bercelaru. Masalah ini mungkin mengganggu ramai pembangun menggunakan cheerio. Artikel ini akan memperkenalkan sebab dan penyelesaian untuk watak bercelaru dalam cheerio, dan membantu pembangun menyelesaikan masalah dengan cepat.

  1. Punca watak cheerio bercelaru

Semasa proses menghurai dokumen, jika pengekodan dokumen tidak konsisten dengan pengekodan yang dihuraikan oleh cheerio, masalah kacau bilau watak akan berlaku. Sebab khusus adalah seperti berikut:

(1) Masalah pengekodan fail sumber. Jika fail sumber menggunakan kaedah pengekodan bukan UTF-8, seperti GBK, GBK2312, dsb., dan cheerio menggunakan pengekodan UTF-8 semasa menghuraikan, bahasa Cina yang dihuraikan akan menjadi kacau.

(2) Masalah penghantaran rangkaian. Jika dokumen yang dihuraikan dihantar melalui rangkaian, kaedah pengekodan penghantaran rangkaian mungkin tidak konsisten dengan kaedah pengekodan penghuraian cheerio, menyebabkan kandungan yang dihuraikan menjadi bercelaru.

  1. Penyelesaian kod kacau Cheerio

Kaedah untuk menyelesaikan masalah kod kacau cheerio sebenarnya sangat mudah. Kaedah khusus adalah seperti berikut:

(1) Tentukan kaedah pengekodan penghuraian. Apabila dokumen menggunakan pengekodan bukan UTF-8, anda boleh menentukan pengekodan yang sepadan apabila menghuraikan dengan cheerio, seperti GBK, GBK2312, dsb. Contoh kod adalah seperti berikut:

const cheerio = require('cheerio');
const iconv = require('iconv-lite');
const request = require('request');

const url = 'https://www.example.com'; // 需要解析的页面 URL
const options = {
    url: url,
    encoding: null        // 设置编码为 null
};
request(options, function (error, response, buffer) {
    const html = iconv.decode(buffer, 'gbk');     // 将 buffer 转成 GBK 编码的字符串
    const $ = cheerio.load(html.toString());      // 使用 cheerio 加载 HTML 字符串
    console.log($('title').text());               // 输出 title 标签的内容
});
Salin selepas log masuk

(2) Semak kaedah pengekodan penghantaran rangkaian. Isu pengekodan semasa menghantar dokumen harus dielakkan apabila boleh. Anda boleh menggunakan alat pembangun penyemak imbas anda untuk melihat pengekodan yang digunakan untuk penghantaran rangkaian, dan kemudian memadankan pengekodan dengan pengekodan yang digunakan apabila cheerio menghuraikannya.

Ringkasnya, cara untuk menyelesaikan masalah cheerio bercelaru adalah dengan memberi perhatian kepada kaedah pengekodan dokumen dan kaedah pengekodan penghantaran rangkaian untuk memadankan kaedah pengekodan apabila cheerio menghuraikan. Hanya dengan memberi perhatian kepada isu-isu ini pembangun boleh mengelak cheerio menghuraikan aksara bercelaru.

Atas ialah kandungan terperinci kod nodejs cheerio bercelaru. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan