Node 抓取非utf-8编码页面

简介: 代码示例 Nodejs抓取非utf8字符编码的页面 -- Ruby's Louvrevar http = require('http');var iconv = require('iconv-lite');var url=require('url'); var html = "";var getURL = url.

代码示例 Nodejs抓取非utf8字符编码的页面 -- Ruby's Louvre

var http = require('http');
var iconv = require('iconv-lite');
var url=require('url');
 
var html = "";
var getURL = url.parse('http://bj.soufun.com/');
var req =http.get(getURL, function (res) {
    res.setEncoding('binary');//or hex
    res.on('data',function (data) {//加载数据,一般会执行多次
        html += data;
    }).on('end', function () {
            var buf=new Buffer(html,'binary');//这一步不可省略
            var str=iconv.decode(buf, 'GBK');//将GBK编码的字符转换成utf8的
            console.log(str);
        })
}).on('error', function(err) {
        console.log("http get error:",err);
    });

UTF8与GBK进行转换,可以把Unicode作为中间编码。
UTF8编解Unicode规则简单,参见 UTF8
GBK编解Unicode无特定规则,一般可通过查表方式
GBK兼容ascii码,ascii字符用一字节编码,最高位为0,其它字符用两位编码,高字节从0x81。编解码时通过此规律对单字节和双字节字符加以区分。
由此可见,GBK是单字节、双字节变长编码。
理解了上面几点后,编解码GBK文件其实只需要一个GBK–>Unicode的码表就够了。
GBK编码时,通过Unicdoe–>GBK,生成相应的GBK字节流;
GBK解码时,通过GBK–>Unicode,生成UCS2字节流,再通过buffer.toString(‘UCS2’)即可转换成string对象。

// npm install iconv-lite
var iconv = require('iconv-lite');
var str = iconv.decode(buf, 'GBK'); //return unicode string from GBK encoded bytes
var buf = iconv.encode(str, 'GBK');//return GBK encoded bytes from unicode string
相关文章
|
5月前
|
数据采集 存储 JavaScript
深入Node.js:实现网易云音乐数据自动化抓取
深入Node.js:实现网易云音乐数据自动化抓取
|
数据安全/隐私保护 Python
node | 在商品页面秒杀
昨天用`Python`写了个淘宝脚本,今天用`node`写一个。
|
存储 JavaScript 关系型数据库
中国国家统计局发布的行政区划数据-nodejs抓取
由于国家的行政区划每年都有变化,所以经常需要更新最新的数据,这里提供一个nodejs版本mysql数据存储的抓取示例。
中国国家统计局发布的行政区划数据-nodejs抓取
|
资源调度 JavaScript 安全
可以在浏览器页面运行 node 代码了!webContainer 发布 1.0
可以在浏览器页面运行 node 代码了!webContainer 发布 1.0
344 0
|
数据采集 存储 移动开发
Node.js躬行记(26)——接口拦截和页面回放实验
Node.js躬行记(26)——接口拦截和页面回放实验
|
前端开发 JavaScript
基于node.js开发的文章生成器(七、网页版本的文章生成器--前端页面篇)
# 引言 经过前面六章的学习,我们已经有了很多知识的储备,本次我们来制作文章生成器的前端部分。 # 数据的传递 接下来这里我们的传递方式主要通过form表单和axios两种方式来传递数据。 ## 传统的form表单传递 传统的form表单传递方式首先通过`<form></form>`标签来完成。 ### 传统的form表单传递---练习测试 我们建立 csss.html和csss.js文件夹 csss.html代码如下: ``` <!DOCTYPE html> <html> <head> <title>xx</title> </head>
node笔记记录68登录页面简单2
node笔记记录68登录页面简单2
41 0
node笔记记录68登录页面简单2
node笔记记录67登录页面简单1
node笔记记录67登录页面简单1
34 0
node笔记记录67登录页面简单1
|
JavaScript
nodejs使用axios 读取gbk编码乱码转化
在通过axios读取页面的时候,经常会碰到gbk的编码,如果不进行转化的话,在获取信息或读取上都会很麻烦。
nodejs使用axios 读取gbk编码乱码转化
|
JavaScript Android开发
nodejs指定编码写入文件
牙叔教程 简单易懂
441 0