我正在使用Kanna Swift进行HTML解析。
例如: 在这种情况下,如何仅解析突出显示的英文文本?
容易容易某些事情,通常是不好的事情,意味着拥有 受它影响或这样做的趋势。
<div class="caption hide_cn">
<a class="anchor" name="prone_1"></a>
<span class="num">1</span>
<span class="st" title="能被表示程度的副词或介词词组修饰的形容词">ADJ-GRADED </span>
<span class="tips_box">
<span class="lbl type-syntax">
<span class="span"> [</span>
verb-link <span class="hi rend-sc">ADJ</span>
</span>
<span class="lbl type-syntax">
<span class="span">, </span>
<span class="hi rend-sc">ADJ</span>
to-infinitive
<span class="span">]</span>
</span>
</span>
<span class="def_cn cn_before">
<span class="chinese-text">有(不好的)倾向的;易于</span>
…
<span class="chinese-text">的;很可能</span>
…
<span class="chinese-text">的</span>
</span>
To be <b>prone to</b> something, usually something bad, means to have a tendency to be affected by it or to do it.
<span class="def_cn cn_after">
<span class="chinese-text">有(不好的)倾向的;易于</span>
…
<span class="chinese-text">的;很可能</span>
…
<span class="chinese-text">的</span>
</span>
</div>
如果我使用:
doc.css("div[class='caption hide_cn']")
我把想要的句子弄得一团糟。
也许我错了,但是我找不到足够的用法说明文件。
例如我从stackoverflow中学到了"span[class= 'xxx xxx']"
,而不是从那个github页面的文档中学到了。
我们有类似"[class != 'xxx xxx'] "
或!=span
答案 0 :(得分:1)
经过一些调整,我找到了一个解决方案,以防万一以后有人需要它。
我们可以使用removeChild
方法删除所有其他部分!
// Search for nodes by CSS
for whole in doc.css("div[class='caption hide_cn']") {
if let a1 = doc.css("span[class='num']").first {
whole.removeChild(a1)
}
if let a2 = doc.css("span[class='st']").first {
whole.removeChild(a2)
}
if let a3 = doc.css("span[class='tips_box']").first {
whole.removeChild(a3)
}
if let s1 = doc.css("span[class='def_cn cn_before']").first {
whole.removeChild(s1)
}
if let s2 = doc.css("span[class='def_cn cn_after']").first {
whole.removeChild(s2)
}
print(whole.text)
}
可惜我在文档中找不到这个。我猜那些软件包/库足够强大,可以执行几乎所有您想要的操作。您只需要进行一些调整即可。