位置: 编程技术 - 正文

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

  • 增值税科目及会计处理
  • 城市维护建设税优惠政策
  • 稳岗返还多久能到账
  • 行政单位利息收入可以扣除手续费
  • 更改开票信息需要多久
  • 预缴增值税的附加税
  • 资产负债表其他应收款怎么填列
  • 没收不还
  • 中小型物流公司简介
  • 货物出口到保税区复进口
  • 工程造价咨询服务流程
  • 公司账户转账转错了能退回来吗
  • 出口货物不用退税吗现在
  • 减免的增值税如何账务处理
  • 何为自然人股东
  • 建筑施工企业预交税款
  • 印花税的计税依据是开票金额吗
  • 增值税发票开具红字发票后上月税款怎么交?
  • 免税发票不用纳税可以吗
  • 应付未付的款项怎么写凭证
  • 营改增后二手固定资产折旧纳税调整怎么做账?
  • 公司接受承兑汇票的风险
  • 购置土地税款怎么入账?
  • 退付手续费核对过期没处理怎么办
  • 市政府的财政拨款怎么算
  • windows已禁用
  • 劳务报酬纳税计算器
  • 生产提供什么产品
  • 房地产企业开发成本
  • 先开票后收款的发票怎么备注
  • 考核工资可以不发吗
  • 企业清算时
  • yolov5训练参数说明
  • 汽油发票需要写税号吗?
  • 小规模纳税人实收资本印花税怎么算
  • pytorch example
  • reactz
  • yolov3目标检测
  • php邮箱smtp发信源码
  • 原材料用于在建工程,进项税为什么不转出
  • 增值税专用发票有几联?
  • 房屋租赁需要计增值税吗
  • 帝国cms修改提示怎么设置
  • jquery ui table
  • phpcms api
  • 船舶税率是多少
  • 制造车间买来刀具怎么办
  • 开票key
  • 企业储蓄存款如何做账
  • 政府补助的会计准则
  • 新收入准则按照期间确认收入
  • 销项税票怎么开
  • 分配利润和分配红利
  • 本月未过账的凭证怎么写
  • 旅行社开的发票如何记账?
  • 公司日常费用支出表怎么做
  • 差旅费包干管理办法
  • 公司固定资产明细表
  • 残保金在网上怎么申报
  • 新建企业应如何建账
  • SQL Server 作业同步 (结合备份作业)
  • 2008r2数据库备份
  • 让Windows Server 2008设备驱动安装图文教程
  • unix操作指令
  • win10周年版
  • centos7ssh登录
  • win7系统怎么设置桌面便签
  • ie11 for win8
  • JavaScript的Ext JS框架中的GridPanel组件使用指南
  • cocos2d原理
  • Unity3D游戏开发pdf
  • jquery实战
  • 移动手机指令
  • 如何判断sma
  • jquery根据value获取元素
  • Python出现keyerror
  • Python for Informatics 第11章 正则表达式(一)
  • js生成二维数组
  • 代理记账管理办法2023
  • 增值税抵扣联怎么装订
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设