在Cheerio

时间:2018-02-27 22:10:39

标签: node.js cheerio

当使用Cheerio解析HTML时,我想要节点的startIndex,因此我使用以下代码指示Cheerio根据说明herehere添加该属性:

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

1 个答案:

答案 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

乌拉!