.find не является функцией для объекта cheerio

1
  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()

Я пытаюсь загрузить HTML строку в cheerio.js и найти a тег, но я получаю

[TypeError: player.find не является функцией]

Console.log показывает players

Изображение 174551

  • 0
    Можете ли вы попробовать это, let players = cheerio.load(playersCell); players('.foo').find('a').html()
Теги:
cheerio

2 ответа

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());
<script src="https://wzrd.in/standalone/cheerio@latest"></script>

Но в этом случае нет необходимости. Вы можете просто использовать начальный поиск напрямую:

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());
<script src="https://wzrd.in/standalone/cheerio@latest"></script>
1

Я получил .find is not a function, и когда я посмотрел на объект в консоли, который я пытался найти, он сказал, что это тип tag. Я понял, что мне нужно снова обернуть объект.

let results = $('.your .query')
results.each((i, r) => {
  $(r).find('.your .next .query')
})

Ещё вопросы

Сообщество Overcoder
Наверх
Меню