位置: 编程技术 - 正文

详解nodejs爬虫程序解决gbk等中文编码问题(nodejs爬虫技术)

编辑:rootadmin

推荐整理分享详解nodejs爬虫程序解决gbk等中文编码问题(nodejs爬虫技术),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node爬取数据,node网络爬虫,node网络爬虫,node爬取数据,nodejs爬虫教程,nodejs爬虫教程,node js爬虫,nodejs爬虫框架crawler,内容如对您有帮助,希望把文章链接给更多的朋友!

使用nodejs写了一个爬虫的demo,目的是提取网页的title部分。

遇到最大的问题就是网页的编码与nodejs默认编码不一致造成的乱码问题。nodejs支持utf8, ucs2, ascii, binary, base, hex等编码方式,但是对于汉语言来说编码主要分为三种,utf-8,gb,gbk。这里面gbk是完全兼容gb的,因此在处理编码的时候主要就分为utf-8以及gbk两大类。(这是在没有考虑到其他国家的编码情况,比如日本的Shift_JIS编码等,同时这里这个iconv-lite模块支持的编码方法有限)。

首先说一下浏览器显示网页内容的时候是如何处理编码问题的。服务器和客户端进行通信,服务端将网页按照指定的编码方式(比如gbk)编码成为二进制码流(即我们使用wireshark抓包看到额进制码流)传送给我们的客户端。客户端则会根据网页源码中所规定的编码方式,由浏览器调用对应的解码器,将二进制码流解码后显示出来。而编码方式通常在网页中是如下内容表示:

或者

详解nodejs爬虫程序解决gbk等中文编码问题(nodejs爬虫技术)

如果客户端是nodejs爬虫请求程序,由于nodejs默认的编码方式是utf-8,因此爬虫程序将接收到的二进制码流以字符串(默认方式utf-8)显示的时候则会显示乱码。这个时候需要将原始的二进制码流按照网页原来的编码方式解码,则不会出现乱码。

因此解决方法如下:

将接收到的网页源码以二进制的方式存储下来,处理二进制数据流使用Buffer全局对象。

然后对这些二进制的数据调用对应的解码程序。iconv-lite模块用于解码,cheerio模块用于解析网页内容。

上述bufferHtmlData为二进制码流,decodeHtmlData为将二进制码流通过gbk编码规则转换为unicode编码对应的数字(即usc2字节流),然后在转换为对应的字符串。下述为iconv-lite源码中解码部分,地址在这里:

可以看到最终返回的是newBuf.toString(‘ucs2')字符串。

爬虫程序源码如下:

标签: nodejs爬虫技术

本文链接地址:https://www.jiuchutong.com/biancheng/377918.html 转载请保留说明!

上一篇:Node.js之网络通讯模块实现浅析(node.js网站)

下一篇:nodejs爬虫遇到的乱码问题汇总(nodejs爬虫 与python爬虫)

  • 小规模增值税会计处理流程
  • 什么叫应纳税所得额
  • 购买需要安装的设备会计分录
  • 小规模季度不超30万需要交什么税
  • 什么是应税所得率方式
  • 建筑企业小型企业有哪些
  • 行政单位会计核算采用
  • 增资导致丧失控制权
  • 预付账款转出分录
  • 水利建设专项收入怎么报税
  • 未入账的记账凭证有误处理方法
  • 考务费属于什么税目
  • 发票票种核定怎么提交
  • 税前列支的好处
  • 超市积分礼品
  • 年初预提费用
  • 现金结算的股权支付等待期
  • 提供有形动产租赁服务的增值税税率是
  • 销售收入增加会导致哪些变动
  • iphone6s怎么开启开发者选项
  • 房东不开发票违法吗
  • 所有者权益变动表范本
  • 工商年报单位缴费基数怎么算出来
  • PHP:mb_strtolower()的用法_mbstring函数
  • windows搜索为什么那么慢
  • 资本公积转增资本要交税吗
  • 后端返回pdf文件地址,前端怎么渲染到页面
  • PHP:pcntl_sigprocmask()的用法_PCNTL函数
  • 技术转让所得的税收优惠
  • php实现和工作原理
  • framework 4 client profile
  • 废旧物资回收企业所得税优惠政策
  • 公司报亏损需要交税吗
  • 公司基本户可以收款吗
  • html下划线怎么设置
  • php实现登录功能
  • 负数发票跨月怎么做账
  • 预收账款是否需入账
  • 固定资产一次性折旧账务处理
  • 简易征收税率表
  • 进项税额已抵扣转出会计分录
  • java 邮件
  • sql server附加数据库出错
  • dedecms v6
  • 外资企业是否属于国企
  • 营业成本的构成
  • 购车增值税可以不交吗
  • 定期定额个体经营所得税申报错了怎么办
  • 水利建设基金计费方式
  • 投资公司如何运作
  • 土地出让金返还比例是多少
  • 红冲发票后如何申报增值税
  • 小规模纳税人减按1%怎么计算
  • 查出以前年度的虚开发票,如何补税
  • 生活垃圾处理费标准
  • 普通发票记账联盖章了怎么办
  • 影响以前年度损益的科目
  • 免税收入包括哪些项目
  • 年初资产总额怎么算
  • 购入固定资产怎么折旧
  • mysql安全性控制语句
  • FreeBSD, Debian, CentOS一个网卡绑定多个IP
  • centos中如何查看ip地址
  • sgrmbroker.exe是什么进程
  • xp系统能用谷歌吗
  • 外国电影怎么看双语的
  • win7任务栏突然变成灰色
  • windows7开始菜单
  • windows 10 build 21354
  • linux分区类型默认的是什么
  • 对于不回微信的人,这样做,尽显高情商!
  • MaterialCheckBox
  • js function的this指向
  • python自动化部署oracle csdn
  • JavaScript For Beginners(转载)
  • 怎么查看keytab文件
  • css实现无缝滚动
  • 汽车销售流程有哪些环节?每个环节的主要内容是什么?
  • 国税系统公务员调动
  • 中小微企业包括一般纳税人吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设