位置: 编程技术 - 正文

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

  • 城镇垃圾处理费的计税依据
  • 财务要做哪些表
  • 购进灭火器材怎么入账
  • 社保税款所属期限什么意思
  • 自来水税率是9%还是3%
  • 土地摊销计入在建工程吗
  • 福利费进项税额转出会计分录账务处理
  • 个体工商户取得经营所得的个人自行申报缴纳个人所得税
  • 公司员工受伤怎么报工伤
  • 工业企业新产品的特点
  • 城镇垃圾处理费计入什么科目
  • 冲销应收账款会引起
  • 存款取款业务记入那个日记账?
  • 企业注销时有未抵扣的留抵
  • 企业计提工资的操作步骤
  • 增值税免税收入汇算清缴的时候填哪
  • 调整薪酬结构
  • 无法查明原因的现金溢余计入什么科目?
  • 汇算清缴之前找回来成本发票可以吗
  • 购买免税苗木抵税分录
  • 提现属于支出吗
  • 不确定金额的应收账款
  • 拍卖的物品
  • 收到空头支票解释怎么写
  • 库存商品赠送会计分录
  • 快启动u盘怎么打开
  • Mail.app增强插件:Universal Mailer介绍
  • php 配置
  • 竣工工程成本核算
  • Obsidian:实现日记记录【设计并使用模板】
  • framework怎么用
  • 什么情况下可以土葬
  • PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
  • 对公结售汇的合规风险
  • 地税没申报罚款多少
  • 增值税和所得税区别
  • vue引入网络js
  • #cookie jar
  • 苹果2021年在中国不能用了吗
  • 发票作废冲红怎么做账
  • 连通函数
  • 织梦常用调用标签
  • 工业企业增值税税负多少合理
  • sql注入的原理和步骤
  • 明细分类账户的名称,核算内容及使用方法是什么规定的
  • 开发票给别人该如何收取税点?
  • 安装调试费属于劳务还是服务
  • 生产辅料清单
  • 收到上年度所得税返还会计分录
  • 资产减值损失如何计提
  • 港口建设费收费标准
  • 试制流程
  • 银行存款日记账对方科目两个怎么办
  • 办公用品怎么开大额发票
  • mysql 最新稳定版本
  • sql servers
  • sql server索引怎么用
  • MySQL使用select语句查询指定表中指定列(字段)的数据
  • win8 itunes
  • macos sierra怎么升级到big sur
  • 同一个用户
  • 怎么修复windows update
  • win10总是弹窗广告
  • ubuntu chmod
  • Retina MacBook和10.10.3支持更快的NVMe SSD接口
  • win8桌面一直在闪
  • win1020h2版本要更新多久
  • linux中内存是2GB,虚拟内存应该是多少
  • linux计划任务每天九点
  • cocos2dx适配
  • 铁嘴王指什么动物
  • 支持向量机
  • vue 组件打包为npm
  • jquery的使用步骤
  • javascript新手教程
  • jquery 菜单
  • 安庆税务局窗口电话
  • 机动车检测属于哪个税收
  • 保险行业税务处理
  • 江苏税务法人实名采集怎么操作流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设