【问题标题】:How can I get the innerHTML of an anchor tag using Cheerio?如何使用 Cheerio 获取锚标记的 innerHTML?
【发布时间】:2021-08-06 23:20:07
【问题描述】:

我想解析 HTML 页面中的一些数据。下面是一个简化的例子。

当我运行以下代码时,我希望它返回[ "foo", "baz", "quux", ],但它会抛出“TypeError:anchorNode.html is not a function”。

失败
const HTML = `
  <a href="foobar">foo</a>
  <a href="bar">baz</a>
  <a href="qux">quux</a>
`;
const $ = Cheerio.load( HTML, );
const result = [];
const $a = $( 'a' );
$a.each(( i, anchorNode, ) => {
  const innerHtml = anchorNode.html();
  result.push( innerHtml, );
});
return result;

有趣的是,以下代码按预期工作。

成功
const HTML = `
  <a href="foobar">foo</a>
  <a href="bar">baz</a>
  <a href="qux">quux</a>
`;
const $ = Cheerio.load( HTML, );
const result = [];
const $a = $( 'a' );
$a.each(( i, link, ) => result.push( link.attribs.href ));
return result;
// result: ["foobar","bar","qux"]

我做错了什么?如何让第一个函数按预期运行?

【问题讨论】:

  • 应该是$(anchorNode).html()anchorNode 是一个 DOM 元素,而不是一个 jQuery 对象。

标签: javascript html jquery cheerio


【解决方案1】:

正如comments Barmar 所述-

应该是$(anchorNode).html()anchorNode 是一个 DOM 元素,而不是一个 jQuery 对象。

【讨论】:

    【解决方案2】:

    anchorNode 被视为一个 DOM 元素。这意味着本机函数只有https://www.w3schools.com/jsref/dom_obj_all.asp 类型。您可以通过将 anchorNode 包装在 $() 中来解决此问题。 IE $(anchorNode).html()

    【讨论】:

      猜你喜欢
      • 2016-08-18
      • 2020-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      相关资源
      最近更新 更多