2009-10-03 10 views
8

एचटीएमएल टैग के बीच सभी ग्रंथों को पकड़ने का सबसे प्रभावी तरीका क्या होगा?नोकोगिरी में सभी टैग के बीच पाठ को पकड़ना?

<div> 
<a> hi </a> 
.... 

एचटीएमएल टैग से घिरे ग्रंथों का समूह।

+0

चेक आउट sanitize भी – Abram

उत्तर

23
doc = Nokogiri::HTML(your_html) 
doc.xpath("//text()").to_s 
+0

धन्यवाद! ठीक काम करता है +1 – rusllonrails

5

एक सैक्स पार्सर का उपयोग करें। XPath विकल्प से बहुत तेज़।

require "nokogiri" 

some_html = <<-HTML 
<html> 
    <head> 
    <title>Title!</title> 
    </head> 
    <body> 
    This is the body! 
    </body> 
</html> 
HTML 

class TextHandler < Nokogiri::XML::SAX::Document 
    def initialize 
    @chunks = [] 
    end 

    attr_reader :chunks 

    def cdata_block(string) 
    characters(string) 
    end 

    def characters(string) 
    @chunks << string.strip if string.strip != "" 
    end 
end 
th = TextHandler.new 
parser = Nokogiri::HTML::SAX::Parser.new(th) 
parser.parse(some_html) 
puts th.chunks.inspect 
+0

यह केवल शरीर टैग के बीच पाठ प्राप्त करने के लिए कैसे बदला जा सकता है? – Omnipresent

+0

ध्वज सेट करें और बॉडी टैग बंद होने के बाद शरीर टैग शुरू होने और कैप्चरिंग बंद करने के बाद केवल वर्णों को कैप्चर करना प्रारंभ करें। –

1

यहाँ कैसे इस पेज के सवाल div में सभी पाठ का तरीका देखें:

require 'rubygems' 
require 'nokogiri' 
require 'open-uri' 

doc = Nokogiri::HTML(open("http://stackoverflow.com/questions/1512850/grabbing-text-between-all-tags-in-nokogiri")) 
puts doc.css("#question").to_s 
2

बस कार्य करें: https://github.com/rgrove/

doc = Nokogiri::HTML(your_html) 
doc.xpath("//text()").text 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^