位置: 编程技术 - 正文

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

  • 支付客户劳务费怎么操作
  • 未使用固定资产计提折旧计入
  • 一般纳税人没有进项怎么交税
  • 房屋租赁备案要准备什么资料
  • 政府补贴在企业怎么申请
  • 成本费用利润率反映什么
  • 销售费用变动率税收政策
  • 营改增以前土地交易应交税费
  • 税务系统有问题
  • 房屋租赁个人所得税缴纳标准是多少
  • 资产剥离类型
  • 劳务分包预缴税怎么算
  • 不含税劳务报酬怎么交税的
  • 研发加计扣除的标准
  • 房地产公司缴纳契税的会计分录
  • 临时人员工资需交税吗
  • 想要避免虚开发票,你就要注意以下行为
  • 个体户网上报税流程视频
  • 哪些银行承兑汇票比较好
  • 资管公司如何缴纳流转税?
  • 单独出售的包装物是否属于包装物的核算范围
  • 股东其他应付款可以转为实收资本文本格式
  • 复核未通过
  • 苹果助手hi
  • 农民工劳动报酬权救济制度存在的问题
  • 华硕s5am7700
  • ubuntu16.04lts
  • fxssvc.exe
  • 外贸企业代理出口销售的出口退税手续由谁办理
  • 偿还债券本金和利息
  • 免费投放资产收益的平台
  • 应付债券到期偿还
  • 工程投标保证金一般是多少
  • 计算机视觉就业前景
  • wordpress是开源吗
  • php str_split
  • HTML与PyCharm
  • go开发web项目
  • Js模板字符串添加点击事件
  • 社会团体收取的会费是否缴纳企业所得税
  • 餐饮发票归哪个部门管
  • 独资子公司与母公司
  • 什么是汇算清缴申报表
  • 实收资本退回给股东需要交印花税吗
  • mysql5.5命令
  • 企业收入确认的文章
  • 企业的管理费用,财务费用和销售费用计不计成本呢
  • mysql怎么替换某个值
  • 计提印花税会计
  • 阶段性减免社保费政策期限延长
  • 工资算营业成本还是管理费用
  • 模具报价成本核算方法
  • 公司基本户的钱怎么用
  • 小规模公司月末报税吗
  • 税收奖励账务处理
  • 会计入职新公司
  • sqlserver获取表结构
  • 搜索功能使用方法
  • 如何找回windows删除的文件
  • linux中dhcp
  • 苹果mac操作系统名称
  • xp电脑注册表怎么打开
  • win7系统怎么关闭防火墙设置
  • win8怎么调整显示器亮度
  • win10周年更新版是什么意思
  • yum源有什么用
  • 怎么隐藏不让别人发现
  • 开快打开
  • Linux中mysqldump命令实例详解
  • 酷狗模拟器
  • 使用Python对SQLite数据库操作
  • jquery示例
  • nodejs如何使用
  • 前端js优化
  • JavaScript中的this指向
  • unity3d游戏开发书籍
  • jquery iframe写入内容
  • 高速发票查询平台官网
  • 江苏省税务局电子发票
  • 小规模纳税人一年500万一年怎么算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设