nodejs 爬虫遇到形如;安卓端的编码如何转换为中文?

Jovey
  • 628

爬前网页的源码:

<p>虽然可以在网上搜索很多的这样类似的插件,但是就是因为太多了而不知道该怎么选择,所以请大家啊推荐一下,好用的,而且还在积极维护的触屏插件</p>

爬到后返回的结果:

<p>&#x867D;&#x7136;&#x53EF;&#x4EE5;&#x5728;&#x7F51;&#x4E0A;&#x641C;&#x7D22;&#x5F88;&#x591A;&#x7684;&#x8FD9;&#x6837;&#x7C7B;&#x4F3C;&#x7684;&#x63D2;&#x4EF6;,&#x4F46;&#x662F;&#x5C31;&#x662F;&#x56E0;&#x4E3A;&#x592A;&#x591A;&#x4E86;&#x800C;&#x4E0D;&#x77E5;&#x9053;&#x8BE5;&#x600E;&#x4E48;&#x9009;&#x62E9;,&#x6240;&#x4EE5;&#x8BF7;&#x5927;&#x5BB6;&#x554A;&#x63A8;&#x8350;&#x4E00;&#x4E0B;,&#x597D;&#x7528;&#x7684;,&#x800C;&#x4E14;&#x8FD8;&#x5728;&#x79EF;&#x6781;&#x7EF4;&#x62A4;&#x7684;&#x89E6;&#x5C4F;&#x63D2;&#x4EF6;</p>

尝试用iconv-lite模块的decode去转码,但是失败了。

回复
阅读 8.4k
3 个回答
✓ 已被采纳

这种叫HTML Entities,可以借助一些模块来转换,比如,html-entities Github

代码如下:

var Entities = require('html-entities').XmlEntities;
entities = new Entities();
var str = '<p>&#x867D;&#x7136;&#x53EF;&#x4EE5;&#x5728;&#x7F51;&#x4E0A;&#x641C;&#x7D22;&#x5F88;&#x591A;&#x7684;&#x8FD9;&#x6837;&#x7C7B;&#x4F3C;&#x7684;&#x63D2;&#x4EF6;,&#x4F46;&#x662F;&#x5C31;&#x662F;&#x56E0;&#x4E3A;&#x592A;&#x591A;&#x4E86;&#x800C;&#x4E0D;&#x77E5;&#x9053;&#x8BE5;&#x600E;&#x4E48;&#x9009;&#x62E9;,&#x6240;&#x4EE5;&#x8BF7;&#x5927;&#x5BB6;&#x554A;&#x63A8;&#x8350;&#x4E00;&#x4E0B;,&#x597D;&#x7528;&#x7684;,&#x800C;&#x4E14;&#x8FD8;&#x5728;&#x79EF;&#x6781;&#x7EF4;&#x62A4;&#x7684;&#x89E6;&#x5C4F;&#x63D2;&#x4EF6;</p>';

console.log(entities.decode(str)); //output <p>虽然可以在网上搜索很多的这样类似的插件,但是就是因为太多了而不知道该怎么选择,所以请大家啊推荐一下,好用的,而且还在积极维护的触屏插件</p>
herrdu
  • 2
新手上路,请多包涵

请使用text方法
console.log(doc.$(elem.children[0]).find('a').text());

eval("'"+"&#x867D;&#x7136;&#x53EF;&#x4EE5;&#x5728;".replace(/&#x(.*?);/g,"\\u$1")+"'")
//虽然可以在
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏