这是一个简单的cheerio应用程序。标签有一个名为product-link的类,我想访问它的href,但是当我在控制台上登录时,我没有得到任何html。任何人都可以了解正在发生的事情以及如何从中获取我想要的数据吗?

let holder = $('.product-link');
console.log(holder);

结果->
initialize {
  options:
   { withDomLvl1: true,
     normalizeWhitespace: false,
     xml: false,
     decodeEntities: true },
  _root:
   initialize {
     '0':
      { type: 'root',
        name: 'root',
        namespace: 'http://www.w3.org/1999/xhtml',
        attribs: [Object: null prototype] {},
        'x-attribsNamespace': [Object: null prototype] {},
        'x-attribsPrefix': [Object: null prototype] {},
        children: [Array],
        parent: null,
        prev: null,
        next: null },
     options:
      { withDomLvl1: true,
        normalizeWhitespace: false,
        xml: false,
        decodeEntities: true },
     length: 1,
     _root: [Circular] },
  length: 0,
  prevObject:
   initialize {
     '0':
      { type: 'root',
        name: 'root',
        namespace: 'http://www.w3.org/1999/xhtml',
        attribs: [Object: null prototype] {},
        'x-attribsNamespace': [Object: null prototype] {},
        'x-attribsPrefix': [Object: null prototype] {},
        children: [Array],
        parent: null,
        prev: null,
        next: null },
     options:
      { withDomLvl1: true,
        normalizeWhitespace: false,
        xml: false,
        decodeEntities: true },
     length: 1,
     _root: [Circular] } }

最佳答案

cheerio具有类似于jQuery的API。因此,当您调用此函数$('selector') cheerio时,将为您返回具有许多方法和字段的对象,以获取属性或查找子 Node 等。这就是为什么它不返回html的原因。但是,如果要查看带下划线的HTML,则可以使用$('selector').html()

如果要访问属性,则可以使用attr()方法。

所以现在您的代码将是

const holder = $('.product-link');
const href = holder.attr('href');

您可以引用以下文档

https://github.com/cheeriojs/cheerio

https://api.jquery.com/(因为cheerio设计为类似于jQuery)

关于node.js - Cheerio给出奇怪的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55835928/

10-12 15:32