维基百科用php,在PHP中解析维基百科标记的最佳方法是什么?
我试图以结构化的方式解析特定的维基百科内容.这是一个示例页面:
我取得了一些成功.我可以检测到这个页面是一个“specie”页面,我也可以将Taxobox(右侧)的信息解析成一个结构.到现在为止还挺好.
但是,我也试图解析文本段落.这些是由Wiki格式或HTML格式的API返回的,我目前正在使用Wiki格式.
我可以阅读这些段落,但我想以特定的方式“清理”它们,因为最终我必须在我的应用程序中显示它并且它没有Wiki标记的意义.例如,我想删除所有图像.通过过滤掉[[Image:]]块,这很容易.然而,还有一些我无法删除的块,例如:
{{转换| 350 | – | 680 |公斤|简称=上}}
删除整个块将打破句子.并且有许多这样的符号具有特殊含义.我想避免编写100个正则表达式来处理所有这些,看看我如何能够以更智能的方式解析它.
我的困境如下:
>我可以继续我目前的半结构化解析路径
有很多工作删除不需要的元素以及“模仿”
需要渲染的模板.
>或者,我可以从呈现的HTML输出开始并解析它,但我担心的是,以结构化方式解析它同样脆弱和复杂
理想情况下,有一个库来解决这个问题,但我还没有找到一个可以解决这个问题的工具.我也看过像DBPedia这样的结构化维基百科数据库,但那些只有我已经拥有的相同结构,他们没有在Wiki文本本身提供任何结构.
维基百科用php,在PHP中解析维基百科标记的最佳方法是什么?相关推荐
- 在C#中解析命令行参数的最佳方法? [关闭]
构建带有参数的控制台应用程序时,可以使用传递给Main(string[] args) . 过去,我只是索引/循环该数组,并做了一些正则表达式来提取值. 但是,当命令变得更复杂时,解析可能会变得很丑陋. ...
- ajax 与php页面取值,在同一页面中使用PHP和AJAX的最佳方法
在同一页面上,我有几种类型的代码:PHP,JS和HTML.我想从HTML表单中获取信息并进行PHP处理,而无需在单击"发送"按钮后重新加载页面. PHP获取它通过API发送的值(来 ...
- PHP自动加载类和方法,在PHP中自动加载类的最佳方法
请,如果您需要自动加载类 – 使用命名空间和类名称约定与SPL自动加载,它将节省您的重构时间. 当然,您将需要将每个类作为对象进行实例化. 谢谢. 或者像这样(我在我的一个项目中): spl_auto ...
- 在ubuntu系统中删除软件的三种最佳方法
三种方法分别是:1.通过软件中心删除 2.通过Synaptic Package Manager删除 3.通过命令行删除 三种方法的详细介绍 一.ubuntu software 1.点击左侧菜单栏上的& ...
- python对数据进行分类_在Python中对一系列数据进行分类的最佳方法
我一直在研究图像处理问题,并且已经对一堆图像进行了预处理,以找到这些图像中最突出的水平线.基于此数据,我想对图像的视角是好还是坏进行分类. 数据点是我能够在一系列图像中检测到的线的角度.从图像的角度来 ...
- php数据库中统计人数用什么方法,在PHP中处理用户统计信息的最佳方法是什么
我如何处理 PHP中的用户统计信息? 我可以选择两种明显的方法.两者都有缺陷. >必要时选择MySQL COUNT.这里的缺陷是,如果你要计算很多行,那么它可能会很慢,特别是当你必须在看似每个页 ...
- java隐藏密钥_java – 在Android中隐藏密钥库密码的最佳方法是什么?
我是Android开发和实现SSLSockets的新手.在做了一些挖掘后,我能够设置一个正常工作的简单服务器/客户端.我认为实现可以使用一些工作,并且难以将密码加载到密钥库而不用纯文本.这是客户端的一 ...
- java 创建动态int数组_在Scala中创建动态增长数组的最佳方法是什么?
如果要使用不可变结构,可以使用以下方法: scala> val orgList = List(1,2,3) orgList: List[Int] = List(1, 2, 3) scala> ...
- asteroids模板 游戏 java_在高级Java游戏中存储全局/静态变量的最佳方法是什么?...
有一个原因是不经常使用静态字段,原因是静态字段的灵活性不如非静态字段,因为静态字段只能有一个副本,但非静态字段可以容纳每个对象实例的值不同. 通过使用静态字段,您将限制自己只有一个玩家.如果你想做多人 ...
最新文章
- 图像变换——等距变换,相似变换,仿射变换,投影变换
- OAuth认证协议原理分析及使用方法
- 操作系统安全加固原理
- Win10安装Ubuntu系统
- Android开发之触摸事件处理机制详解
- firedac的TFDStoredProc动态创建并调用存储过程
- Spring的事务控制-基于xml方式
- 设计模式——单例模式(懒汉模式,饿汉模式)
- c语言链表萌新,萌新一枚,关于链表问题求大佬解答
- pythonrandrange_Python3 randrange() 函数
- ADO.NET 事务控制
- php layui table,Layui table组件相关介绍
- xml层级工具_.NET的类型层次查看工具,ClassHierarchyViewer,0.3.0.1
- jsoup 简单应用
- 听说IT人的目标都是成为架构师,那么请收下这份架构养成计划
- 24.go clean
- vim 配置文件 (未完待续)
- OPERA固定价格学习
- 京香julia_百度百科
- ffmpeg所有的解码器(decoders)
热门文章
- 龙剑服务器为什么总是维修,《龙剑》2014年3月13日更新维护公告
- python中的cli模块_Python 快速实现CLI 应用程序的脚手架
- Swift 位运算练习
- 某计算机型号,某计算机的型号为486/33,其中33的含义是?
- oracle存储查询出来的值_技术分享|浅析ORACLE数据库物理体系结构及其对应优化策略...
- 使用Visual Studio Code 运行编写第一个html文件
- 脚本中的关于‘/xff‘字符记录
- python如何保证输入键入数字
- python with语句与contextlib
- pandas - 案例(美国2012年总统候选人政治献金数据分析)