admin 管理员组文章数量: 1087139
2024年4月24日发(作者:sql语言是关系数据库的国际标准语言)
利用 PHP 与 MediaWiki API 来获取维基百
科信息
简介
常用缩略语
API:应用程序编程接口
CSRF:跨站点请求伪造
HTML:超文本标记语言
HTTP:超文本传输协议
IP:因特网协议
JSON:JavaScript 对象标记法
OOP:面向对象编程
PEAR:PHP 扩展与应用程序库
REST:具象状态传输
WDDX:Web 分布式数据交换
XHTML:可扩展超文本标记语言
XML:可扩展标记语言
YAML:YAML Ain't 标记语言
很多人都知道维基百科:它是容纳各种来源知识的终极存储库,涵盖几乎每个您能想到的主题,通过 Web
浏览器就可轻松获得。不论您想要查找什么信息,都可在维基百科中找到,并能获得详细的相关信息。而
且,因为它是公开可编辑的,所以,其中经常会包含一些更新信息以及相关信息。
大部分人可能对维基百科的另一个侧面不太了解。那就是隐藏的幕后的,强大的 Web 服务 API,它使得
开发人员能够进行访问、搜索、以及将维基百科内容集成到自定义 Web 应用程序中。该 API 通过 HTTP
工作,并返回各种格式的数据(包括 XML),对广大编程人员免费提供,它使得利用维基百科的强大数据
库来创建各类自定义 Web 应用程序成为可能。
在本文中,将对该 API 进行简要介绍,展示如何利用 PHP 编程语言来对其进行集成与使用。本文解释
了该 API 的工作基础,然后为您介绍列出类目、通过类目或者关键字来搜索条目、检索并展示条目、以及
远程增加和编辑内容等的相关实际例子。
回页首
理解 API
在开始研究 PHP 代码之前,先要介绍一下 Wikipedia API。首先,虽然本文中我将其称之为 “Wikipedia
API”,但需要特别注意,该 API 不是 Wikipedia 专用的。它实际上是 MediaWiki(Wikipedia 的运行基
础)的一部分,因此,本文中所列举的技术和 API 方法还可用于任何其他基于 MediaWiki 的 wiki 中。
参考资料 中提供了 MediaWiki 与完整 MediaWiki API 参考手册的链接。
和所有基于 HTTP 的服务一样,该 API 通过接受 HTTP 请求(其中包含一个或多个输入参数并返回可
被请求客户端使用和解析的响应)来运行。大多数情况下,响应的格式是 XML,因为当前几乎所有编程语
言都能够解析 XML;然而,也有可能需要返回其他格式的数据,比如 JSON、WDDX、YAML、或者 PHP
序列化的。
该 API 的每一个 HTTP 请求都必须包含一个 “action” 参数,它指定请求的动作。该参数必须是一个查询、
一个编辑或删除操作、一个认证请求、或者所支持的任何一个操作。除了这一强制参数外,基于所选择的
操作,还必须传递附加的参数,例如,用于查询的搜索关键字、编辑或者删除操作的页面标题、或者需要
进行认证的用户名和密码。
想要查看运行中的 API,可访问以下 URL。(注意:该 URL 实际上是一个字符串。因为格式的原因,用
两行来显示。)
/w/?action=query&list=allcategories&acprop=size
&acprefix=hollywood&format=xml
该方法会返回以前缀 “hollywood” 开始的前 10 个 Wikipedia 类。清单 1 举例说明针对该请求的原始
XML 响应。
清单 1. 示例 API 提要
xml:space="preserve">Hollywood
xml:space="preserve">Hollywood's Rock Walk inductees
xml:space="preserve">Hollywood, California
xml:space="preserve">Hollywood, Florida
xml:space="preserve">Hollywood, Los Angeles, California
xml:space="preserve">/celebrity/Wanda Shelley
xml:space="preserve">Hollywood Actors
xml:space="preserve">Hollywood Actress
xml:space="preserve">Hollywood Blacklist
xml:space="preserve">Hollywood Boulevard
版权声明:本文标题:利用PHP与MediaWikiAPI来获取维基百科信息 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1713941551a658757.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论