【发布时间】: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