在PHP中解析维基百科标记的最佳方法是什么?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了在PHP中解析维基百科标记的最佳方法是什么?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图以结构化的方式解析特定的维基百科内容.这是一个示例页面

http://en.wikipedia.org/wiki/Polar_bear

我取得了一些成功.我可以检测到这个页面一个“sPEcie”页面,我也可以将TaxoBox(右侧)的信息解析成一个结构.到现在为止还挺好.

但是,我也试图解析文本段落.这些是由Wiki格式或html格式的API返回的,我目前正在使用Wiki格式.

我可以阅读这些段落,但我想以特定的方式“清理”它们,因为最终我必须在我的应用程序中显示它并且它没有Wiki标记的意义​​.例如,我想删除所有图像.通过过滤掉[[Image:]]块,这很容易.然而,还有一些我无法删除的块,例如:

{{转换| 350 | – | 680 |公斤|简称=上}}

删除整个块将打破句子.并且有许多这样的符号具有特殊含义.我想避免编写100个正则表达式来处理所有这些,看看我如何能够以更智能的方式解析它.

我的困境如下:

>我可以继续我目前的结构化解析路径
有很多工作删除不需要的元素以及“模仿”
需要渲染的模板.
>或者,我可以从呈现的HTML输出开始并解析它,但我担心的是,以结构化方式解析它同样脆弱和复杂

理想情况下,有一个库来解决这个问题,但我还没有找到一个可以解决这个问题的工具.我也看过像DBPedia这样的结构化维基百科数据库,但那些只有我已经拥有的相同结构,他们没有在Wiki文本本身提供任何结构.

解决方法

使用的模板太多,无法手动重新实现所有模板,并且它们一直在变化.因此,您将需要可以处理所有模板的wiki语法的实际解析器.

wiki syxtax非常复杂,有很多怪癖,没有正式的规范.这意味着创建自己的解析器太多了,你应该使用MediaWiki中的解析器.

因此,我认为通过the MediaWiki API获取解析的HTML是最好的选择.

从wiki标记解析可能更容易的一件事是信息框,所以也许它们应该是一个特例.

脚本宝典总结

以上是脚本宝典为你收集整理的在PHP中解析维基百科标记的最佳方法是什么?全部内容,希望文章能够帮你解决在PHP中解析维基百科标记的最佳方法是什么?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。