Web クローリング中に Node が検出した HTML エンティティ オブジェクトによって文字化けが発生する code_html/css_WEB-ITnose

WBOY
リリース: 2016-06-24 11:28:22
オリジナル
1553 人が閲覧しました

Web クローリング中に Node が遭遇した Html エンティティ オブジェクトにより、コードが文字化けします

つまり、テキストの内容は次のようになります:

��һҳ iconv を使用してみてください -lite モジュールのデコードを使用してトランスコードしましたが、失敗しました。

これは HTML エンティティと呼ばれ、html-entities Github などのいくつかのモジュールを使用して変換できます。

HTML エンティティが何であるかについては、次の URL を参照してください:

http://www.w3school.com.cn/html/html_entities.asp

html-entities は次のように使用されます

var Entities = require('html-entities').XmlEntities;entities = new Entities();var str = '��һҳ';console.log(entities.decode(str)); 
ログイン後にコピー

クローラーリクエスト 調整するには:

1 var headers = {  2   'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36'3 }
ログイン後にコピー

プラス簡単な偽装

Node を使用してクロールする場合、リクエストによって返された Web コンテンツを受け入れるときは、cheherio を使用する必要があります。

1 var html = iconv.decode(body, 'gbk')2 var $ = cheerio.load(html, {decodeEntities: false})
ログイン後にコピー

クロールされた Web ページのエンコーディングがわからない場合は、次を使用してください:

res.headers['content-type']

返されたエンコーディング形式に従って処理するだけです

in の場合- Web コンテンツのトランスコーディングと文字化けしたコードの深度分析については、次のブログ投稿を参照してください:

http://www.dewen.io/q/13755

http://www.99css.com/nodejs-request- chinese-encoding/

このイケメンさんの分析もとても興味深いです

http://blog.vichamp.com/program/2015/07/04/Common-Messy-Code/

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート