2012-08-28 40 views
1

我試圖使用反向標記Ruby gem將HTML頁面轉換爲Markdown。不幸的是它失敗:在Ruby中自動解決未關閉的HTML標記

/usr/lib/ruby/1.9.1/rexml/parsers/treeparser.rb:95:in `rescue in parse': #<REXML::ParseException: Missing end tag for 'img' (got "td") (REXML::ParseException) 

源包含一些IMGINPUT等標籤來結束與>,而不是/>

我已經試過tidy_ffi寶石:

doc = Nokogiri::HTML(TidyFFI::Tidy.new(Nokogiri::HTML(page).to_html, 
     :numeric_entities => 1, 
     :output_html => 1, 
     :merge_divs => 0, 
     :merge_spans => 0, 
     :join_styles => 0, 
     :clean => 1, 
     :indent => 1, 
     :wrap => 0, 
     :drop_empty_paras => 0, 
     :literal_attributes => 1).clean) 

但並沒有區別。有什麼建議麼?

+1

請顯示一些HTML樣本。 –

+0

你在哪一點得到錯誤?向我們展示相關代碼,請 –

+0

HTML從哪裏來?降價處理器? –

回答

1

反向降價實際上假定降價處理器生成格式良好的XHTML。如果你的沒有,你可能想試試html2markdown寶石。它使用Nokogiri進行解析,並且可能更強大(免責聲明:我沒有使用它)。

-2

我做了一個摘錄html:https://www.ruby-toolbox.com/gems/auto_excerpt的gem,也許你可以使用它或看看它用來做這個的代碼?不知道這是否回答這個問題。

其實我剛纔注意到你打電話引入nokogiri :: HTML兩次:Nokogiri::HTML(TidyFFI::Tidy.new(Nokogiri::HTML(page).to_html

我不知道,如果你得到的錯誤是從引入nokogiri或TifyFFI未來雖然。

+0

我認爲這根本不相關。 OP似乎知道如何處理HTML。 –

+0

我想不是,更新。 – RipTheJacker

+0

他對Nokogiri的使用是合法的。他解析文檔讓Nokogiri做一些修正,再將其轉換爲HTML,並試圖讓TidyFFI發揮它的魔力,這將再次返回HTML。最後,他用Nokogiri將它解析成文件。這是非常規的,但沒關係。它只是不解決問題。 –