前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >原来还有一种空格叫 "NBSP"

原来还有一种空格叫 "NBSP"

作者头像
zgq354
发布2019-11-24 18:32:43
1.3K0
发布2019-11-24 18:32:43
举报
文章被收录于专栏:0x00010x0001

最近在用 Node 的 cheerio 类库整一个抓取课表的小爬虫,其中有部分不需要的信息的 HTML 标签内部只有一个  ,我想利用它作为特征来过滤掉无用的信息。

cheerio 默认会把所有HTML字符都转换为相应的实体(HTML Entity), 所以我设置了一个

代码语言:javascript
复制
cheerio.load(data, { decodeEntities: false });

的选项,把它们都还原为原本的字符。

没想到又打开了一个新坑。。。

起初的过滤代码是这样的

代码语言:javascript
复制
// 遍历单元格
var courses = courseCells.filter(function (i, el) {
  var html = $(el).html();
  return html !== " ";
});

然后惊奇地发现,居然没有过滤成功???

加了句 console.log(html !== " "),发现结果都是 true

所以这里的html里面的  " " 不是一个东西?

console.log(encodeURIComponent(html)),发现结果是

代码语言:javascript
复制
%C2%A0

一般的空格不是 %20 吗,果然它们不是一个东西。

搜索发现,这玩意儿原来叫 Non-breaking space,ASCII码是 160,用来防止两个连着的单词因为自动换行而拆散。

知道了问题所在,一切都变得简单了~

代码语言:javascript
复制
// 遍历单元格
var courses = courseCells.filter(function (i, el) {
  var html = $(el).html();
  return html !== String.fromCharCode(160);
});

参考: Non-breaking space - Wikipedia

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档