代码示例 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 hexres.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

转载于:https://www.cnblogs.com/flowerszhong/p/6731250.html

Node 抓取非utf-8编码页面相关推荐

  1. node抓取58同城信息_如何使用标准库和Node.js轻松抓取网站以获取信息

    node抓取58同城信息 网络抓取工具是一种工具,可让我们选择网站的非结构化数据并将其转换为结构化数据库. 那么,网络刮板将在哪里派上用场呢? 我列出了我最喜欢的用例,以使您对启动自己的应用感到兴奋! ...

  2. php爬虫模拟浏览器,PHP模拟浏览器访问,抓取非本地文件的几种方法「爬虫」

    在做一些天气预报或者RSS订阅的程序时,往往需要抓取非本地文件,一般情况下都是利用php模拟浏览器的访问,通过http请求访问url地址, 然后得到html源代码或者xml数据,得到数据我们不能直接输 ...

  3. node抓取王者荣耀英雄资料库

    用node写的爬虫,抓取王者荣耀英雄资料库,只是为了学习,侵删! 主要包括(基本上相关的都抓取): 召唤师技能 铭文 装备 英雄 皮肤 英雄故事 英雄技能 推荐铭文 推荐装备 技能加点 没有搞懂如何动 ...

  4. 经验分享 | Burpsuite抓取非HTTP流量

    使用Burp对安卓应用进行渗透测试的过程中,有时候会遇到某些流量无法拦截的情况,这些流量可能不是HTTP协议的,或者是"比较特殊"的HTTP协议(以下统称非HTTP流量).遇到这种 ...

  5. htmlunit+quartz定时抓取博文并生成jsp页面

    前言 分析网页 页码分析 文章链接分析 文章内容分析 io流生成jsp页面 squarz设置定时抓取 前言 看视频看的累了 写写博文~ 很久以前就想有个自己的博客.csdn很好,可是我不是专家啊,还是 ...

  6. [Python爬虫] 之十二:Selenium +phantomjs抓取中的url编码问题

    最近在抓取活动树网站 (http://www.huodongshu.com/html/find.html) 上数据时发现,在用搜索框输入中文后,点击搜索,phantomjs抓取数据怎么也抓取不到,但是 ...

  7. 试图抓取非英文windows操作系统镜像时PE无法正常启动解决方法

    [url]http://support.microsoft.com/kb/952573/en-us[/url] MS有机器翻译,不知道和机器翻译比,手工翻译效果如何 SYMPTOMS When you ...

  8. 搜索引擎蜘蛛抓取不到网站内容页面的原因总结

    我们分析网站日志时会发现搜索引擎的蜘蛛有时候来访很频繁,但是就不抓取内容页面,如果没有经验的SEO人员会一头雾水,甚至会觉得是搜索引擎的问题. 其实有一大半还是网站自身存在问题,如果蜘蛛来访频率不低, ...

  9. Java - 抓取优酷网视频播放页面(使用jsoup解析html,正则表达式处理字符串)

    最近在研究视频播放这块儿,然后打算做一款视频聚合类的软件,首先把优酷聚合搞定吧! 我们首先得把优酷网的视频播放页面的地址解析出来,由于优酷有很多拍客的视频,这些拍客的视频当然不是我们想要的,通过优酷网 ...

最新文章

  1. 基于YOLOv5的智慧工地安全帽检测(1)
  2. c++入门之浅入浅出类——分享给很多想形象理解的人
  3. sql注入修复方法是_旧的方法是修复我们可以看到的内容。
  4. 关于“Exchange Server 地址列表服务未能响应”的错误解决方法。
  5. S3C2440 偷学
  6. java 集合操作工具包_java之操作集合的工具类--Collections
  7. 近似推断---变分线性回归
  8. 五年前,跳槽涨薪,你笑了,五年后,跳槽降薪,请接受
  9. windows系统禁止更改服务启动类型_能源管理系统SMARTCOLLECT常见问题解答
  10. Taro开发微信小程序遇到的问题和解决方法
  11. 顶点计划 挑战性课程讨论
  12. nginx集群的搭建
  13. 华为机试二星题--机器人走迷宫
  14. Rate Limiting速率限制
  15. ANTLR中文手册二(ANTLR 是什么)
  16. TOGAF学习札记(二)
  17. 思科踏足中国房地产CCRE首次落地大陆社区
  18. 再见,工资!2020年6月程序员工资统计,平均14404元,网友:又跌了!
  19. 泛型和异常、 Properties文件读取加载
  20. 【国内火车运行路线计算与展示】

热门文章

  1. 国内外免费PHP开源建站程序
  2. python libnum库安装使用方法
  3. javaMail发邮件
  4. 查询表的列名,字符类型
  5. 重新想象 Windows 8.1 Store Apps (79) - 控件增强: MediaElement, Frame
  6. Linux命令删除某目录下的所有.svn文件
  7. [转]HDR渲染器的实现(基于OpenGL)
  8. Android学习笔记(五)——数据存储(二)SQLite和ContentProvider
  9. leetcode算法题--Minimum Depth of Binary Tree
  10. Java反射之如何判断类或变量、方法的修饰符(Modifier解析)