位置: 编程技术 - 正文

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

  • 车辆消费税征税范围是什么
  • 个体户查账征收需要交什么税
  • 哪个税种不需要认定就能在电子税务局申报
  • 其他权益投资公允价值变动怎么计量
  • 教育培训机构内账会计
  • 核定征收企业股权转让所得税
  • 土地所有权可以出资吗
  • 新车交车辆购置税需要什么材料
  • 怎样进行房产置换的账务处理
  • 以物易物方式销售货物例题
  • 公司司机出车补贴
  • 税负率是税率吗
  • 总公司委托分公司工程委托书模板
  • 园林设计属于什么
  • 广告服务印花税怎么交
  • 营改增后房产税计税依据及计算方式
  • 对公账户钱怎么退回去
  • 关于增值税专用发票
  • 当月增加的投资性房地产当月提折旧吗
  • 计提本季度所得税会计分录
  • 借其他应收贷应付
  • 建筑业跨区预缴增值税未预缴
  • 合并报表的收入
  • 普票清单可以是专票吗
  • 股权无偿赠与子女怎么办理手续
  • 收购报废车有利润吗
  • 结转利润分配分录怎么写
  • 代扣代缴税款的完税凭证抵扣期限
  • mac电脑新手使用
  • 苹果手机送修了会给备用机吗
  • win7打开启动
  • php图片叠加
  • 库存商品的分类有哪些
  • 计提工会经费会计账务处理
  • 发票已开,款未到的会计分录
  • vue里面的路由
  • jsoup js
  • vue的常见面试题
  • php与服务器的关系
  • cpu power management设置
  • phpcms建站流程
  • 一般情况下公司为什么会吊销
  • 资产基金的明细科目
  • 停车费计税
  • 结转入库材料计什么科目
  • python访问字符串
  • 全面理解健康教案
  • 发票冲红后报税有影响吗
  • 总公司所得税汇算
  • 营业收入的构成分析应该从哪些方面进行?
  • sql server 附加
  • 废料处理没开票销项税
  • 代销手续费如何交增值税m
  • 固定资产改造多少直接进费用
  • 承兑贴现个人违法吗
  • 公司注销其他应付款法人借款
  • 印花税的通俗理解
  • 收购溢价会计处理
  • 按公允价值入账的有哪些
  • 收到货款会计分录怎么写
  • sql server数据库查询语句
  • 磁盘已满
  • windows8开机慢怎么办
  • mac图形界面
  • 进程spoolsv.exe
  • win7系统的电脑
  • pim架构
  • Win10 Mobile RedStone预览版14267.1004更新内容汇总(持续更新)
  • python计算ndvi
  • opencv轻松入门
  • vs2010配置opengl
  • Android笔记本
  • python基础总结
  • shell判断文件是否存在且大小不为0
  • 安卓基于谷歌
  • 安卓解析工具
  • jquery插件使用
  • 安徽营业执照网上怎么申请
  • 福建国税电子税务局app
  • 深圳拖欠工资举报网站
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设