對於這個問題的長度抱歉,它更像是「這是可能的」而不是「我該怎麼做」。使用修改的Nokogiri解析Wikitext?
我的目標是從維基百科標記中除去純文本 - 表格,模板,格式。是否在wikitext markup(例如''bold text''
)或HTML(<b>bold text</b>
)中。
維基文本是自定義標籤的混合:模板{{ ... }}
,表{| ... |}
,鏈接[[ ... ]]
和HTML元素。解析它是一種噩夢。你不能使用正則表達式,因爲標籤可以嵌套,並且它可以包含HTML,所以幾乎任何事情都是可能的。我想保留HTML中的一些文本(粗體文本內的東西),但其他東西如表格需要完全剝離。
我想到了,再重新考慮像引入nokogiri XML解析器,加入{{
/}}
以替代<x>
/</x>
。
有誰知道Nokogiri(或另一個Ruby XML解析器)知道這是否可能,甚至是一個好主意?
我的替代方案是爲wiki標記重新使用現有的解析器WikiCloth,然後嘗試通過其他方法刪除任何剩餘的HTML。
這是一種上下文無關的語言,所以libxml應該能夠解析它。我不確定您是否可以更改分析樹。大概寫你自己的解析器。 – Reactormonk 2012-02-02 11:32:43
爲什麼不把它渲染爲HTML,其中包含所有標記的內容,然後使用Nokogiri來提取原始文本? – Phrogz 2012-02-03 06:08:45
@Progrog我可以做到這一點,我只是希望能節省一些時間,因爲有很多文字需要解析。 – 2012-02-03 08:16:37