【发布时间】:2017-06-07 16:52:43
【问题描述】:
背景
我在 NodeJs 应用程序中使用 cheeriojs 解析 HTML 页面。 目标是从该页面获取一系列链接。
问题
该库运行良好,但我对一组特定的标签(两个<a> 标签)有疑问,cheerio 无法识别我的挚爱!
<a href="/wiki/Orokin_Void" title="Orokin Void" class="mw-redirect">Orokin Void</a> <a href="/wiki/Storage_Containers" title="Storage Containers" class="mw-redirect">Containers</a>
我检查并仔细检查了标签的结构是否理想
因此,根据文档,以下代码将打印2:
let htmlSource = '<a href="/wiki/Orokin_Void" title="Orokin Void" class="mw-redirect">Orokin Void</a> <a href="/wiki/Storage_Containers" title="Storage Containers" class="mw-redirect">Containers</a>';
let cheerioStuff = $(htmlSource).find("a").length;
console.print(cheerioStuff);
相反,它打印0。这令人着迷,至少对我而言。另一个字符串Corpus T3 <a href="/wiki/Defense" title="Defense">Defense</a> Reward 似乎也出现了同样的问题。
但是,它适用于以下一个:
<div class="pi-data-value pi-font"><a href="/wiki/Orokin_Vault" title="Orokin Vault" class="mw-redirect">Orokin Vault</a></div>
或者这个:
<a href="/wiki/Lynx_Osprey" title="Lynx Osprey">Lynx Osprey</a>
问题
此时可能::
- 我的 HTML 源代码中有一些特殊的不可见的邪恶字符,这是 Cheerio 不喜欢的。
- cheerio 只会在其他标签中找到
<a>标签,或者如果它们单独存在。
我已经测试了第一个选项,但结果没有改变。所以现在我倾向于认为问题是第二种选择,我发现它非常有限。
它也可以是两者的结合,在这种情况下,我被彻底搞砸了。
我怎样才能做到这一点?有什么建议?
【问题讨论】:
-
另一种可能性:如果这段 HTML 没有根标签,它将无法工作。例如,您是否尝试将这些 包装在中?
标签: javascript html node.js cheerio