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/