2015-02-18 2 views
0

Я пытаюсь извлечь текст с HTML-страницы с помощью Nokogiri. Я использую селектор CSS для извлечения текста.Как получить весь текст в теге с помощью селектора CSS Nokogiri?

Я знаю, что метод text используется для извлечения текста внутри определенного тега, но он дает только текст, являющийся непосредственным потомком тега.

Как получить весь текст в теге, включая текст, который может находиться внутри любых тегов, вложенных в указанный тег?

<td> 
<div> 
some text 
</div> 
<div> 
more text 
</div> 
</td> 

Как получить весь текст в <td> тегов внутри <td> так text ничего не вернешь и не известно заранее, сколько теги будут там внутри <td>.

+1

'text' возвращает весь текст, содержащийся в определенном узле. Как говорится в [docs] (http://www.rubydoc.info/github/sparklemotion/nokogiri/Nokogiri/XML/Node#text-instance_method), он «Возвращает содержимое для этого узла». –

+0

Жаль, что я делал что-то неправильно, я думаю. Виноват. – Brogrammer

ответ

4

Похоже, вы можете просто вызвать #text метод целевого элемента, и он будет включать в себя все дочерние текстовые узлы:

doc = Nokogiri::HTML(your_html_snippet) 
str = doc.css('td').text 
str # => "\n\nsome text\n\n\nmore text\n\n" 
0

Вы можете использовать

str = doc.css('td').content

это поможет вам весь текст на всех уровнях вложенности