.find 不是cheerio 对象上的函数

use*_*719 5 javascript node.js cheerio

  let playersCell = `
    <td class="foo" colspan="2">
      <a href="example.com">
        <span class="bold">John Beluga</span>
         - Sarah Jay.
       </a>
    </td>
    `

let players = cheerio.load(playersCell)
players.find('a').html()
Run Code Online (Sandbox Code Playgroud)

我尝试将 html 字符串加载到 Cheerio.js 中并找到一个a标签,但我得到了

[类型错误:players.find 不是函数]

Console.log显示为players

在此输入图像描述

Mic*_*ael 6

我得到了.find is not a function,当我在控制台中查看我试图找到的对象时,它说它的类型是tag。我意识到我需要再次包裹该物体。

let results = $('.your .query')
results.each((i, r) => {
  $(r).find('.your .next .query')
})
Run Code Online (Sandbox Code Playgroud)


Que*_*tin 1

find是出现在 DOM 搜索结果中的方法。在使用 find 之前,您需要创建一个结果。

例如:

let playersCell = `<table><tr>
    <td class="foo" colspan="2">
      <a href="example.com">
        <span class="bold">John Beluga</span>
         - Sarah Jay.
       </a>
    </td></tr></table>
    `

let players = cheerio.load(playersCell);
console.log(players('td').find('a').html());
Run Code Online (Sandbox Code Playgroud)
<script src="https://wzrd.in/standalone/cheerio@latest"></script>
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,没有必要。您可以直接使用初始搜索:

let playersCell = `
    <td class="foo" colspan="2">
      <a href="example.com">
        <span class="bold">John Beluga</span>
         - Sarah Jay.
       </a>
    </td>
    `

let players = cheerio.load(playersCell);
console.log(players('a').html());
Run Code Online (Sandbox Code Playgroud)
<script src="https://wzrd.in/standalone/cheerio@latest"></script>
Run Code Online (Sandbox Code Playgroud)