>  기사  >  웹 프론트엔드  >  nodejs의 Cherio가 잘못된 코드를 사용했습니다.

nodejs의 Cherio가 잘못된 코드를 사용했습니다.

王林
王林원래의
2023-05-23 12:32:08657검색

데이터 전송 과정에서 문자 왜곡 문제가 발생하기 쉽습니다. 데이터 크롤링을 위해 nodejs를 사용하는 과정에서 문서 파싱을 위해 Cherio를 사용하는 경우가 많습니다. 그러나 때로는 Cherio를 사용하여 구문 분석한 내용이 왜곡될 수 있습니다. 이 문제는 Cherio를 사용하는 많은 개발자를 귀찮게 할 수 있습니다. 이 글에서는 개발자들이 문제를 빠르게 해결할 수 있도록 cheio에서 글자가 깨져 나오는 이유와 해결 방법을 소개하겠습니다.

  1. Cheerio 문자 깨짐 현상이 발생하는 이유

문서를 파싱하는 과정에서 문서의 인코딩이 Cherio에서 파싱한 인코딩과 일치하지 않으면 문자 깨짐이 발생합니다. 구체적인 이유는 다음과 같습니다.

(1) 소스 파일 인코딩 문제. 소스 파일이 GBK, GBK2312 등과 같은 UTF-8이 아닌 인코딩 방식을 사용하고, Cherio가 구문 분석 시 UTF-8 인코딩을 사용하는 경우 구문 분석된 중국어가 깨집니다.

(2) 네트워크 전송 문제. 파싱된 문서가 네트워크를 통해 전송되는 경우, 네트워크 전송의 인코딩 방법이 치리오 파싱의 인코딩 방법과 일치하지 않아 파싱된 콘텐츠가 왜곡될 수 있습니다.

  1. Cheerio 잘못된 코드 솔루션

Cheerio 잘못된 코드 문제에 대한 해결책은 실제로 매우 간단합니다. 구체적인 방법은 다음과 같습니다.

(1) 파싱 인코딩 방법을 지정합니다. 문서가 UTF-8이 아닌 인코딩을 사용하는 경우 GBK, GBK2312 등과 같이 Cherio로 구문 분석할 때 해당 인코딩을 지정할 수 있습니다. 코드 예시는 다음과 같습니다.

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 标签的内容
});

(2) 네트워크 전송 인코딩 방식을 확인합니다. 문서를 전송할 때 인코딩 문제는 가능하면 피해야 합니다. 브라우저의 개발자 도구를 사용하여 네트워크 전송에 어떤 인코딩이 사용되는지 확인한 다음, Cherio가 구문 분석할 때 사용되는 인코딩과 인코딩을 일치시킬 수 있습니다.

간단히 말하면, Cherio 왜곡 문제를 해결하는 방법은 문서의 인코딩 방식과 네트워크 전송의 인코딩 방식을 주의하여 Cherio가 구문 분석할 때의 인코딩 방식과 일치하도록 하는 것입니다. 이러한 문제에 주의를 기울여야만 개발자는 잘못된 문자를 구문 분석하는 것을 피할 수 있습니다.

위 내용은 nodejs의 Cherio가 잘못된 코드를 사용했습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:nodejs를 pdf로다음 기사:nodejs를 pdf로