2015-09-17 4 views
1

Я пытаюсь разобрать этот html с помощью goquery. Я не могу понять, как разбирать строку «Строка, в которой я нуждаюсь», выбрасывая все остальное.Получить текст из div без дочерних элементов

<div class="outter-class"> 
     <h1 class="inner-class"> 
     The string I need 
     <span class="other-class" >Some value I don't need</span> 
     <span class="other-class2" title="sometitle"></span> 
     </h1> 
     <div class="other-class3"> 
      <h3>Some heading i don't need</h3> 
     </div> 
    </div> 

Я пытался использовать что-то вроде: https://stackoverflow.com/a/8851526/989919, адаптируя его к goquery так:

test := s.Clone().Children().Empty().End().Text() 
fmt.Println(test.Text()) 

Но это не работает. Я попробовал много разных вариантов от API, но я не могу понять это.

+0

Боюсь, я не могу помочь с 'goquery'. Мне просто интересно, зачем вы его используете? В собственной документации говорится, что это попытка подделать jQuery. Почему бы просто не использовать jQuery. –

+0

Я пишу парсер для веб-сайта в Go в качестве упражнения. – mediocre

ответ

4

Так я получил его на работу был с:

// End() lets us jump back to the h1 selection to get its text 
text := doc.Find("h1").Children().Remove().End().Text() 
text = strings.TrimSpace(text) 
fmt.Println(text) 

Выход:

Строка мне нужно

код удаляет c (элементы диапазона) из элемента h1, чтобы получить правильный вывод. Там может быть более простой способ сделать это, но он работает. :)

+1

Вам придется изменить 'Children' на' Children() ', но потом это сработает. Благодаря! – mediocre

+0

Ahh да спасибо за ловлю опечатку. Я создал суть этого вопроса, так что любой в будущем может иметь следующий пример: https://gist.github.com/alexmullins/ac9581e106eb6b1a33ac –

+0

Там я также сохранил исходный выбор из doc.Find ("h1"). Это уменьшает некоторые вычисления из-за того, что не нужно снова пересекать дерево, чтобы найти («h1»). –

-2

Как насчет:

doc.Find(".outter-class .inner-class").Children().First().Text() 
+0

Просто проверил это, и это просто возвращает «Некоторое значение, которое мне не нужно» – mediocre

+1

Пожалуйста, добавьте некоторое объяснение, почему этот код помогает OP. Это поможет обеспечить ответ, о котором могут узнать будущие зрители. См. [Ответ] для получения дополнительной информации. –

Смежные вопросы