Разбор только простого текста из HTML с помощью Kanna Swift - PullRequest
0 голосов
/ 26 октября 2018

Я использую Канна Swift для анализа HTML.

Например: Как я могу разобрать только выделенный текст на английском языке в этой ситуации?

Быть склонным к чему-то, обычно чему-то плохому, значит иметь тенденция быть затронутой или сделать это.

enter image description here

                <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']") Я получаю всю грязную часть предложения, которое хочу.

Возможно, я ошибаюсь, но не смог найти достаточно документации об использовании.
например Я узнал "span[class= 'xxx xxx']" из stackoverflow вместо документации с этой страницы github.
Есть ли у нас что-то вроде "[class != 'xxx xxx'] " или !=span

1 Ответ

0 голосов
/ 26 октября 2018

После некоторых настроек я нашел обходное решение на тот случай, если кому-то понадобится позже.

Мы можем использовать метод 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)
      }

Жаль, что я не смог найти это в документации. Я думаю, что эти пакеты / библиотеки достаточно мощные, чтобы делать практически все, что вы хотите. Вам просто нужно немного подправить.

...