当前位置: 首页 > news >正文

Node.js爬虫抓取数据 -- HTML 实体编码处理办法

 

cheerio DOM化并解析的时候

1.假如使用了 .text()方法,则一般不会有html实体编码的问题出现

2.如果使用了 .html()方法,则很多情况下(多数是非英文的时候)都会出现,这时,可能就需要转义一番了

类似这些 因为需要作数据存储,所有需要转换

Халк крушит. Новый способ исполнен

大多数都是&#(x)?\w+的格式

所以就用正则转换一番

var body = ....//这里就是请求后获得的返回数据,或者那些 .html()后获取的

//一般可以先转换为标准unicode格式(有需要就添加:当返回的数据呈现太多\\\u 之类的时)
body=unescape(body.replace(/\\u/g,"%u"));
//再对实体符进行转义
//有x则表示是16进制,$1就是匹配是否有x ,$2就是匹配出的第二个括号捕获到的内容,将$2以对应进制表示转换
body = body.replace(/&#(x)?(\w+);/g,function($,$1,$2){
                return String.fromCharCode(parseInt($2,$1?16:10));
             });

ok ~

当然了,网上也有很多个转换的版本,适用的就行了

 

 

后记:

当使用爬虫抓取网页数据时,cheerio模块是经常使用到底,它像jq那样方便快捷

(但有些功能并未支持或者换了某种形式,比如 jq的 jQuery('.myClass').prop('outerHTML') ,cheerio则等价于 jQuery.html('.myClass') http://www.mgenware.com/blog/?p=2514 )

转载于:https://www.cnblogs.com/imwtr/p/4614297.html

相关文章:

  • 牛客网-约数的个数
  • 变量get、set设置
  • 《C语言及程序设计》实践参考——递归函数
  • CSS空白符处理!
  • SQL判断一个数是整数还是小数
  • 第9章 Spring Boot开发者工具
  • Objective C多态
  • Hadoop 架构简介
  • 创业路(VC Pipeline),创业需要融资的阅读
  • 令人血脉喷张的animate.css
  • quartz+spring定时任务常见错误总结
  • HTML 超链接a的几种用法
  • java_JDBC(4)
  • svnserver搭建
  • Android视图绘制流程完全解析,带你一步步深入了解View(二)
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • download使用浅析
  • javascript面向对象之创建对象
  • JS 面试题总结
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • npx命令介绍
  • Otto开发初探——微服务依赖管理新利器
  • tab.js分享及浏览器兼容性问题汇总
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前嗅ForeSpider教程:创建模板
  • 一些css基础学习笔记
  • 走向全栈之MongoDB的使用
  • ionic异常记录
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ![CDATA[ ]] 是什么东东
  • # 飞书APP集成平台-数字化落地
  • #etcd#安装时出错
  • #pragma 指令
  • (003)SlickEdit Unity的补全
  • (02)Hive SQL编译成MapReduce任务的过程
  • (07)Hive——窗口函数详解
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)插入排序
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)setTimeout 和 setInterval 的区别
  • (转)可以带来幸福的一本书
  • .Net6使用WebSocket与前端进行通信
  • [1181]linux两台服务器之间传输文件和文件夹
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [ACTF2020 新生赛]Upload 1
  • [ai笔记9] openAI Sora技术文档引用文献汇总
  • [android] 天气app布局练习
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)
  • [BJDCTF2020]The mystery of ip1