位置: 编程技术 - 正文

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

  • 进项税转出大于进项税,加计抵减怎么计算
  • 应收留抵税额退税款属于哪类科目
  • 工程项目纳税
  • 月末存款余额
  • 银行的划分标准
  • 汇款退回来的可以不做账吗
  • 员工本地住宿费会计分录
  • 零售不要发票如何报税
  • 公司向个人转款备注备用金合法吗
  • 海关进口增值税如何入账
  • 公司的样品一般怎么处理
  • 发票冲红后原发票还有用吗?
  • 减免税款怎么入账
  • 营改增后建筑业开票规定
  • 个人转让住房要交哪些税费?
  • 油卡充值属于什么行业
  • 进料加工贸易是什么意思
  • 收到保险返利计入什么
  • 增值税发票小数点后面小数不能打印
  • 实收资本减值会计处理
  • 员工有多处收入怎么申报个人所得税
  • 公司给职工买工伤险流程
  • 结转利润分配分录怎么写
  • 社保费税前扣还是税后扣
  • 收到的销项负数要认证吗
  • 建筑业预缴企业所得税税率
  • win7纯净版系统官网
  • 装修费用账务怎么处理
  • 山茶花的养殖方法和注意事项视频
  • 计提未支付的费用
  • 安全费用的适用范围
  • 资产减值损失属于损益类的收入还是费用
  • 固定资产加速折旧优惠明细表怎么填
  • 增值税纳税申报表附列资料(一)
  • 个税中累计住房怎么计算
  • vue3加ts
  • 营业执照上住所和经营场所
  • vue中proxy代理?
  • 【Spring+SpringMVC+Mybatis】Spring+SpringMVC+Mybatis实现前端到后台完整项目
  • 基于Python的图书馆信息管理系统研发
  • ps如何进行像素修复
  • 跨月红字发票开错了可以撤销吗
  • 增值税专用发票查询系统官方网站
  • 出口报关单运费单位怎么填
  • 融资租赁各方
  • 小规模租金可以抵税吗
  • 2019年印花税减半征收条件
  • 跨年度冲收入,冲成本分录如何做?
  • 关税计入什么科目
  • 报销无法取得发票
  • 销售产品的软件平台
  • 贷款损失准备核销
  • 固定资产抵扣进项税额最新规定
  • 同一张发票报销两次会被发现吗
  • 产品质量问题有赔偿吗
  • 企业应交税金包括印花税吗
  • 获得赔偿收入什么科目
  • 子公司的取得方式
  • sql server数据
  • 内连接 sql
  • centOS7安装MySQL数据库
  • git服务器默认端口
  • linux的tar命令详解
  • win8无法连接到internet
  • cmd命令start命令
  • root linux
  • ubuntu切换登录用户
  • linux咋用
  • win10mobile现在能干吗
  • windowsxp打不开网页怎么办
  • css中清除浮动的方法
  • js校验姓名
  • 残疾人就业保障金减免政策2022
  • 新疆12366网上办税
  • 江西省电子税务局登录入口
  • 国家税务局申请电子发票怎么申请
  • 国家税务总局税务局官网
  • 三证合一怎么申报
  • 食品烟酒消费包括哪些
  • 我国近十年财政支出结构占比
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设