我试图以结构化的方式解析特定的维基百科内容.这是一个示例页面:

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

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

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

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

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

我的困境如下:

>我可以继续我目前的半结构化解析路径

有很多工作删除不需要的元素以及“模仿”

需要渲染的模板.

>或者,我可以从呈现的HTML输出开始并解析它,但我担心的是,以结构化方式解析它同样脆弱和复杂

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

维基百科用php,在PHP中解析维基百科标记的最佳方法是什么?相关推荐

  1. 在C#中解析命令行参数的最佳方法? [关闭]

    构建带有参数的控制台应用程序时,可以使用传递给Main(string[] args) . 过去,我只是索引/循环该数组,并做了一些正则表达式来提取值. 但是,当命令变得更复杂时,解析可能会变得很丑陋. ...

  2. ajax 与php页面取值,在同一页面中使用PHP和AJAX的最佳方法

    在同一页面上,我有几种类型的代码:PHP,JS和HTML.我想从HTML表单中获取信息并进行PHP处理,而无需在单击"发送"按钮后重新加载页面. PHP获取它通过API发送的值(来 ...

  3. PHP自动加载类和方法,在PHP中自动加载类的最佳方法

    请,如果您需要自动加载类 – 使用命名空间和类名称约定与SPL自动加载,它将节省您的重构时间. 当然,您将需要将每个类作为对象进行实例化. 谢谢. 或者像这样(我在我的一个项目中): spl_auto ...

  4. 在ubuntu系统中删除软件的三种最佳方法

    三种方法分别是:1.通过软件中心删除 2.通过Synaptic Package Manager删除 3.通过命令行删除 三种方法的详细介绍 一.ubuntu software 1.点击左侧菜单栏上的& ...

  5. python对数据进行分类_在Python中对一系列数据进行分类的最佳方法

    我一直在研究图像处理问题,并且已经对一堆图像进行了预处理,以找到这些图像中最突出的水平线.基于此数据,我想对图像的视角是好还是坏进行分类. 数据点是我能够在一系列图像中检测到的线的角度.从图像的角度来 ...

  6. php数据库中统计人数用什么方法,在PHP中处理用户统计信息的最佳方法是什么

    我如何处理 PHP中的用户统计信息? 我可以选择两种明显的方法.两者都有缺陷. >必要时选择MySQL COUNT.这里的缺陷是,如果你要计算很多行,那么它可能会很慢,特别是当你必须在看似每个页 ...

  7. java隐藏密钥_java – 在Android中隐藏密钥库密码的最佳方法是什么?

    我是Android开发和实现SSLSockets的新手.在做了一些挖掘后,我能够设置一个正常工作的简单服务器/客户端.我认为实现可以使用一些工作,并且难以将密码加载到密钥库而不用纯文本.这是客户端的一 ...

  8. java 创建动态int数组_在Scala中创建动态增长数组的最佳方法是什么?

    如果要使用不可变结构,可以使用以下方法: scala> val orgList = List(1,2,3) orgList: List[Int] = List(1, 2, 3) scala> ...

  9. asteroids模板 游戏 java_在高级Java游戏中存储全局/静态变量的最佳方法是什么?...

    有一个原因是不经常使用静态字段,原因是静态字段的灵活性不如非静态字段,因为静态字段只能有一个副本,但非静态字段可以容纳每个对象实例的值不同. 通过使用静态字段,您将限制自己只有一个玩家.如果你想做多人 ...

最新文章

  1. 图像变换——等距变换,相似变换,仿射变换,投影变换
  2. OAuth认证协议原理分析及使用方法
  3. 操作系统安全加固原理
  4. Win10安装Ubuntu系统
  5. Android开发之触摸事件处理机制详解
  6. firedac的TFDStoredProc动态创建并调用存储过程
  7. Spring的事务控制-基于xml方式
  8. 设计模式——单例模式(懒汉模式,饿汉模式)
  9. c语言链表萌新,萌新一枚,关于链表问题求大佬解答
  10. pythonrandrange_Python3 randrange() 函数
  11. ADO.NET 事务控制
  12. php layui table,Layui table组件相关介绍
  13. xml层级工具_.NET的类型层次查看工具,ClassHierarchyViewer,0.3.0.1
  14. jsoup 简单应用
  15. 听说IT人的目标都是成为架构师,那么请收下这份架构养成计划
  16. 24.go clean
  17. vim 配置文件 (未完待续)
  18. OPERA固定价格学习
  19. 京香julia_百度百科
  20. ffmpeg所有的解码器(decoders)

热门文章

  1. 龙剑服务器为什么总是维修,《龙剑》2014年3月13日更新维护公告
  2. python中的cli模块_Python 快速实现CLI 应用程序的脚手架
  3. Swift 位运算练习
  4. 某计算机型号,某计算机的型号为486/33,其中33的含义是?
  5. oracle存储查询出来的值_技术分享|浅析ORACLE数据库物理体系结构及其对应优化策略...
  6. 使用Visual Studio Code 运行编写第一个html文件
  7. 脚本中的关于‘/xff‘字符记录
  8. python如何保证输入键入数字
  9. python with语句与contextlib
  10. pandas - 案例(美国2012年总统候选人政治献金数据分析)