【问题标题】:Fetching html with cheerio用cheerio获取html
【发布时间】:2017-09-18 13:55:28
【问题描述】:

我正在使用cheerio,如何获得content

我的代码很适合这个:

request('https://example.com', function (error, response, html) {
  if (!error && response.statusCode == 200) {
    const $ = cheerio.load(html);
      console.log(html);
  }
});

我需要从content得到사이드

<meta property="og:description" content="???? I'm Jack">
<meta property="og:title" content="사이드">  // How to Get `사이드` and print in console.log?

【问题讨论】:

    标签: javascript cheerio


    【解决方案1】:
    request('https://example.com', function (error, response, html) {
      if (!error && response.statusCode == 200) {
          const $ = cheerio.load(html);
          console.log($("meta[property='og:title']").attr("content"));    
      }
    });
    

    侧节点(与答案中的先前错误有关):

    在使用cheerio 时应该注意,它只模拟jQuery api 的某些方面,并不会重新创建整个DOM。这意味着与此答案的先前版本相反,您不能这样做:

    $("meta").get(1).getAttribute("origin"); 这将导致尝试调用 undefined 时出现 TypeError。 Cheerio 构建了 DOM 的表示,在其上实现了 jQuery api 的子集。 get api 存在,但将返回此表示,而不是标准的 DOM,并且没有 getAttributemethod 附加到cheerio 表示。如果你想要一个完整的 DOM 表示和 jQuery,你需要使用像 jsdom 这样的东西。

    【讨论】:

    • 用第一个解决了,当我使用第二个时我得到了:console.log($("meta").get(1).attr("content"));TypeError: $(...).get(...).attr is not a function
    • 你好,我犯了一个错误,我修正了,使用 get 实际上返回底层 DOM 元素,所以你需要使用 getAttribute 而不是 attr 让它工作。我添加了一条评论,因为我没有用cheerio 对其进行测试,但它在浏览器中有效。谢谢你的耐心:)
    • 亲爱的@adz5A 我的问题已解决第一个问题,但在第二个问题中,我为您的新更新得到了这个:TypeError: $(...).get(...).getAttribute is not a function
    • 我回家后试试。这就是我评论的目的,因为 Cheerio 没有建立 dom。但是,在浏览器上,您可以访问底层 dom 对象。稍后我将编辑有关 jquery api 的 Cheerio 命令的更多详细信息
    • 我找到了解决方案,我使用 .eq(1) 而不是 .get(1)
    【解决方案2】:

    第一种方法: console.log($("meta[property='og:title']").attr("content")); 由@adz5A 解决

    第二种方式:console.log($("meta").eq(1).attr("content"));

    .get() 返回一个 DOM 对象。
    Cheerio 不是浏览器,所以 DOM api 不可用。

    【讨论】:

      猜你喜欢
      • 2017-09-07
      • 1970-01-01
      • 2020-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-16
      相关资源
      最近更新 更多