位置: 编程技术 - 正文

详解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爬虫)

  • 小规模纳税人增值税可以抵扣吗
  • 如何判断销售额含税还是不含税
  • 车船税税金及附加计入管理费用嘛
  • 什么是应税所得率方式
  • 预缴税款是什么科目
  • 发行股票手续费佣金计入什么科目
  • abc类企业是什么意思
  • 跨期两年的发票怎么处理
  • 向保险公司缴纳的保险费可以税前扣除吗
  • 深圳重工业企业有哪些
  • 收到办公用品的普票怎么入账
  • 异地预缴企业所得税几个点
  • 开增值税专用发票需要合同吗
  • 小规模企业跨季报税流程
  • 出口业务增值税免抵税额
  • 小规模企业税务筹划
  • 即征即退增值税政策
  • 报个税失业保险怎么填
  • 制造费用计入期间费用吗
  • 营业成本主要包括
  • 劳务派遣个税怎么扣
  • 所得税申报表中的营业成本包括费用吗
  • 开票的增值税与附加税
  • 商誉减值会计准则
  • 清卡处于非征期是什么意思
  • 借条复印件可以起诉吗还有转账记录
  • 购货方收到红字发票计入进项税转出还是进项税额负数?
  • 如何修复面部毛孔粗大
  • php-ml
  • 补缴以前月份的个人所得税
  • 已认证进项税发票可抵扣么
  • 商贸企业小规模转一般纳税人条件
  • 计量差错引起的盘亏
  • yii2开发文档
  • 电子税务局增值税申报流程
  • php读取数据库复选框数据
  • 提取法定盈余公积会计科目
  • postman操作流程
  • pca降维的原理
  • 服务型制造收入
  • 狂神说css笔记
  • 预付一年的技术服务费
  • 长期待摊费用如何做分录
  • 个人所得税数据怎么导入新电脑
  • 下列项目的进项税额可以从销售税额中抵扣的是
  • 债务豁免涉税
  • sql server附加数据库出错
  • 工会经费与残保金属于什么
  • 开个人劳务票需要本人去吗
  • 待认证进项税额月末怎么处理
  • 结构性存款是什么意思是理财
  • 有限公司股权转让需要股东会决议吗
  • 适用于一般纳税人的税率有
  • 有发票还要填写领款单吗
  • 什么是委托加工原材料
  • 会计中为什么要用黑色笔写
  • 建筑发票可以一次性抵扣吗
  • 应付职工薪酬属不属于流动负债
  • 企业成立第二年有补贴吗
  • case在sql中
  • mysql中sum的用法
  • windows进程数
  • 运维zabbix
  • u盘安装mac系统
  • kdeskcore.exe是什么
  • mac m1读取ntfs
  • linux的系统日志
  • frameworkservic.exe是什么进程 有什么作用 frameworkservic进程查询
  • redhat linux yum
  • 进入Linux单用户模式
  • iptables防火墙规则
  • windows2008 iis
  • js字符串去掉最后两位
  • 利用forever和pm2部署node.js项目过程
  • android 自定义actionbar
  • 保险专票可以抵进项税吗
  • 河南车船税收费标准2022年
  • 国税增值税申报怎么记账凭证填写
  • 销货清单表格的制作方法
  • 成都市成华区税务局新地址
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设