当使用Cheerio解析HTML时,我想要节点的startIndex
,因此我使用以下代码指示Cheerio根据说明here和here添加该属性:
const options = { withStartIndices: true };
const html = `
<template>
<h1>Hello!</h1>
</template>
<script>
const foo = () => {
console.log('bar')
}
</script>
<style>
h1{
color:blue;
}
</style>
`;
const $ = cheerio.load(html, { withStartIndices: true });
console.log( $('#element')[0].startIndex );
但这导致以下输出:
undefined
答案 0 :(得分:1)
在线搜索并挖掘Cheerio的代码后,我发现Cheerio默认使用parse5。要获得startIndex
属性,您必须通过将xmlMode
选项设置为true
来指示Cheerio使用htmlparser2:
const options = {
xmlMode: true,
withStartIndices: true
}
const html = `
<template>
<h1>Hello!</h1>
</template>
<script>
const foo = () => {
console.log('bar')
}
</script>
<style>
h1{
color:blue;
}
</style>
`;
const $ = cheerio.load(html, options);
console.log( $('#element')[0].startIndex );
这导致以下输出:
110
乌拉!