cheeriojsparsing问题:找不到<a>标签?
背景
我在我的NodeJs应用程序中使用cheeriojsparsingHTML页面。 目标是从该页面获取一系列链接。
问题
图书馆运作良好,但我有一个特定的一套标签(两个<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
。 这是令人着迷的,至less对我而言。 同样的问题似乎与另一个stringCorpus 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>
题
在这一点上可能是这样的::
- 我在cheerio不喜欢的HTML源代码中有特殊的隐形邪恶字符。
- cheerio只会在其他标签内find
<a>
标签,或者如果他们是独自一人的话。
我已经testing了第一个选项,但结果没有改变。 所以现在我倾向于认为这个问题是第二个select,我觉得这是非常有限的。
它也可以是两者的结合体,在这种情况下,我被皇家的拧紧。
我怎样才能做这个工作? 有什么build议么?
find
当前集合中a
元素的后代,但是你的a
元素不是子孙,他们是当前集合(例如,顶层)。 你想过filter
:
let cheerioStuff = $(htmlSource).filter("a").length;
…或者可能是filter
的组合,并find
是否要涵盖两个基地:
let elements = $(htmlSource); let cheerioStuff = elements.find("a").add(elements.filter("a")).length;
例如,这个输出2
:
"use strict"; let $ = require('cheerio'); 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 elements = $(htmlSource); let cheerioStuff = elements.find("a").add(elements.filter("a")).length; console.log(cheerioStuff);
而这个:
"use strict"; let $ = require('cheerio'); let htmlSource = '<div><a href="/wiki/Orokin_Void" title="Orokin Void" class="mw-redirect">Orokin Void</a></div> <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 elements = $(htmlSource); console.log("find: " + elements.find("a").length); console.log("filter " + elements.filter("a").length); console.log("combined: " + elements.find("a").add(elements.filter("a")).length);
…输出:
find:1 filter2 合并:3
…因为我在div
里面加了一个