cách nào sẽ là cách hiệu quả nhất để lấy tất cả các văn bản giữa các thẻ html?lấy văn bản giữa tất cả các thẻ trong Nokogiri?
<div>
<a> hi </a>
....
bó văn bản được bao quanh bởi thẻ html.
cách nào sẽ là cách hiệu quả nhất để lấy tất cả các văn bản giữa các thẻ html?lấy văn bản giữa tất cả các thẻ trong Nokogiri?
<div>
<a> hi </a>
....
bó văn bản được bao quanh bởi thẻ html.
doc = Nokogiri::HTML(your_html)
doc.xpath("//text()").to_s
cảm ơn! Hoạt động tốt +1 – rusllonrails
Sử dụng trình phân tích cú pháp Sax. Nhanh hơn nhiều so với tùy chọn 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
làm thế nào điều này có thể được thay đổi để chỉ nhận được văn bản giữa thẻ cơ thể một mình? – Omnipresent
Đặt cờ và chỉ bắt đầu chụp các ký tự sau khi bạn thấy thẻ body bắt đầu và dừng chụp sau khi thẻ body đóng. –
Dưới đây là làm thế nào để có được tất cả các văn bản trong div câu hỏi của trang này:
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
Chỉ cần làm:
doc = Nokogiri::HTML(your_html)
doc.xpath("//text()").text
Check-out https://github.com/rgrove/ khử trùng quá – Abram