我用 Cheerio 解析我的请求,如下所示:
var url = http://shop.nag.ru/catalog/16939.IP-videonablyudenie-OMNY/16944.IP-kamery-OMNY-c-vario-obektivom/16704.OMNY-1000-PRO;
request.get(url, function (err, response, body) {
console.log(body);
$ = cheerio.load(body);
console.log($(".description").html());
});
作为输出,我看到内容,但采用不可读的奇怪编码:
//Plain body console.log(body) (p.s. russian chars):
<h1><span style="font-size: 16px;">Уличная 3Мп IP HD камера OMNY - попробуйте найти лучше</span></h1><p style
// cheerio's console.log $(".description").html()
<h1><span style="font-size: 16px;">Уличная 3Мп IP HD камера OMNY
目标url链接编码为UTF-8格式。那么为什么 Cheerio 会破坏我的编码呢?
尝试使用 iconv 来编码我的身体反应:
var body1 = iconv.decode(body, "utf-8");
but console.log($(".description").html());
仍然返回奇怪的文本。
Cheerio 没有破坏任何东西。正在输出HTML 实体 https://developer.mozilla.org/en-US/docs/Glossary/Entity,任何浏览器都会呈现与 HTML 输入完全相同的内容。运行这个片段看看我的意思:
<h1><span style="font-size: 16px;">Уличная 3Мп IP HD камера OMNY - попробуйте найти лучше</span></h1>
<h1><span style="font-size: 16px;">Уличная 3Мп IP HD камера OMNY - попробуйте найти лучше</span></h1>
У
,例如,是字符У
编码为 HTML 实体,与实体的方式相同>
代表>
.
但是,如果你想获取未编码的文本,你可以设置decodeEntities
选项false
:
const $ = cheerio.load(
`<h1><span style="font-size: 16px;">Уличная 3Мп IP HD камера OMNY - попробуйте найти лучше</span></h1>`,
{ decodeEntities: false }
);
console.log($('span').html())
// => Уличная 3Мп IP HD камера OMNY - попробуйте найти лучше
.as-console-wrapper{min-height:100%}
<script src="https://bundle.run/[email protected] /cdn-cgi/l/email-protection"></script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)