与Cheerio嵌套每个循环选择

时间:2019-01-23 20:49:57

标签: node.js cheerio

我正在尝试用Cheerio嵌套每个循环,选择两次我的Cheerio选择。我之所以这样编写代码,是因为我想在进行次要选择时迭代父选择的数量。

我的每个循环第二次都找不到任何元素。我还尝试过创建一个新的cheerio $$构造函数并将html馈入其中,但这也失败了。

$(selector1).each(function (i, el) {
    j++;
    // logging html is showing several p elements
    console.log($(this).html());
    $(this).find('p').each((k, elem) => {
      // but this loop is not finding any elements
      // $(elem).text() returns null
    });
  });

1 个答案:

答案 0 :(得分:0)

能够使其与以下产品一起使用。无论出于什么原因,我都必须重新选择每个循环的子元素来获取其innerText。对于父元素,我只能在参数上调用text()。

const $ = cheerio.load(res);
  const data = [];
  $(selector1).each((i, el) => {
    j++;
    $(el).find('p').each((k, elem) => {
        // i had to reselect $(elem) here rather than just use elem.text()
      data.push({
        text: $(elem).text(),
        post: j
      });
    });
  });