我正试图以结构化的方式解析特定的维基百科内容。这是一个示例页面:
http://en.wikipedia.org/wiki/Polar_bear
我取得了一些成功。我可以检测到这个页面是一个“specie”页面,我也可以将Taxobox(右侧)的信息解析成一个结构。到目前为止一切都很好。
但是,我也试图解析文本段落。这些是由Wiki格式或HTML格式的API返回的,我目前正在使用Wiki格式。
我可以阅读这些段落,但我想以特定的方式“清理”它们,因为最终我必须在我的应用程序中显示它并且它没有Wiki标记的意义。例如,我想删除所有图像。通过过滤掉[[Image:]]块,这很容易。然而,还有一些我无法删除的块,例如:
{{转换| 350 | - | 680 |公斤|简称=上}}
删除整个块会破坏句子。并且有许多这样的符号具有特殊含义。我想避免编写100个正则表达式来处理所有这些,看看我如何能够以更智能的方式解析它。
我的困境如下:
理想情况下,有一个库可以解决这个问题,但我还没有找到一个可以解决这个问题的工具。我还看了一下结构化的维基百科数据库,比如DBPedia,但那些只有我已经拥有的相同结构,他们没有在Wiki文本本身提供任何结构。
答案 0 :(得分:3)
有太多的模板用于手动重新实现所有模板,并且它们一直在变化。因此,您将需要可以处理所有模板的wiki语法的实际解析器。
wiki syxtax非常复杂,有很多怪癖,没有正式的规范。这意味着创建自己的解析器太多了,你应该使用MediaWiki中的解析器。
因此,我认为通过the MediaWiki API获取解析后的HTML是最好的选择。
可能更容易从wiki标记解析的一件事是信息框,所以也许它们应该是一个特例。