Maison > interface Web > js tutoriel > le corps du texte

Node.js explore les problèmes de pages Web chinoises tronquées et solutions_node.js

WBOY
Libérer: 2016-05-16 16:14:49
original
1846 Les gens l'ont consulté

Lorsque Node.js explore des pages Web chinoises non utf-8, des caractères tronqués apparaissent. Par exemple, le codage de la page d'accueil de NetEase est gb2312, et des caractères tronqués apparaissent lors de l'exploration
.

Copier le code Le code est le suivant :

var requête = require('request')
var url = 'http://www.163.com'

request(url, function (err, res, body) {
console.log(corps)
})


Vous pouvez utiliser iconv-lite pour résoudre

Installation

Copier le code Le code est le suivant :

npm installe iconv-lite

En même temps, modifions le user-agent pour éviter que le site Web soit bloqué :
Copier le code Le code est le suivant :

var originRequest = require('request')
var iconv = require('iconv-lite')
var en-têtes = {
« Agent utilisateur » : « Mozilla/5.0 (Macintosh ; Intel Mac OS >
demande de fonction (url, rappel) {

options var = {
URL : URL,
encodage : nul,
en-têtes : en-têtes
>
originRequest(options, rappel)
>

request(url, function (err, res, body) {

var html = iconv.decode(body, 'gb2312')
console.log(html)
})

Problème de code tronqué résolu

Utilisez cheerio pour analyser le HTML

cheerio peut être compris simplement et grossièrement comme un sélecteur jQuery côté serveur. Avec lui, il est beaucoup plus intuitif que les expressions régulières.

Installation


Copier le code Le code est le suivant :
npm installe cheerio
requête (url, fonction (err, res, corps) {
var html = iconv.decode(body, 'gb2312')
var $ = cheerio.load(html)
console.log($('h1').text())
console.log($('h1').html())
})

Le résultat est le suivant

Copier le code Le code est le suivant :
NetEase
NetEase

Ensuite, voici le problème. Le code généré par $('h1').html() est codé en Unicode. NetEase est devenu NetEase, ce qui pose quelques problèmes au traitement de nos caractères
.

Résoudre le problème "brouillé" de cheerio .html()
Consultez le
document pour savoir que vous pouvez désactiver la fonction de conversion du codage d'entité

Copier le code Le code est le suivant :
var $ = cheerio.load(html)

Changer pour

Copier le code Le code est le suivant :
var $ = cheerio.load(html, {decodeEntities : false})

Ça y est, le code complet est le suivant :

Copier le code Le code est le suivant :

var originRequest = require('request') 
var cheerio = require('cheerio') 
var iconv = require('iconv-lite') 
var en-têtes = { 
  'User-Agent' : 'Mozilla/5.0 (Macintosh ; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/39.0.2171.65 Safari/537.36'
>

demande de fonction (url, rappel) { 
  options var = {
    URL : URL,
    encodage : nul,
    en-têtes : en-têtes
  >
  originRequest(options, rappel)
>

var url = 'http://www.163.com'

request(url, function (err, res, body) { 
    var html = iconv.decode(body, 'gb2312')
    var $ = cheerio.load(html, {decodeEntities : false})
    console.log($('h1').text())
    console.log($('h1').html())
})

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal