0

对不起,伙计们,我一直在模拟询问如何将维基百科数据集成到我的应用程序中,坦率地说,我认为我没有取得任何成功,因为我一直在尝试所有的想法并且有点放弃当我读到死胡同或障碍时。我将尝试解释我到底想在这里做什么。

我有一个简单的位置目录,如城市和国家。我的应用程序是一个简单的基于 php 的基于 ajax 的应用程序,具有搜索和浏览功能。人们注册并将自己与一个城市相关联,当用户浏览城市时 - 他/她可以看到该城市的人和公司,即我们系统中的任何人。

该部分很容易自行设置并且工作正常。问题是我的搜索结果将采用以下格式,即有人搜索让我们说北京。它将在三个选项卡式界面框中返回:

  1. 第一个选项卡会有一个包含北京城市信息的信息框
  2. 第二个将是一个国家选项卡,其中包含来自中国的国家信息的信息框
  3. 第三个选项卡将列出所有在北京的联系人。

前两个标签的内容应该来自维基百科。现在我完全不知道什么是完成这项工作的最佳方法,而且一旦决定了一种方法——我该如何去做并让它变得相当强大的。

到目前为止,我能够消化的一些好的和坏的想法是:

  1. 直接向维基百科运行 curl 请求,并在每次搜索时解析返回的数据。在这种情况下,无需维护 wikipedia 上的数据的本地副本。另一个问题是它完全依赖于来自远程第三位置的数据,我怀疑每次向维基百科发出请求以检索基本信息是否可行。再加上考虑到维基百科上的数据需要在每个请求时进行解析 - 这将克服繁重的服务器负载......或者我在这里推测。

  2. 下载维基百科转储并查询。好吧,我已经下载了整个数据库,但是从 xml 转储中导入所有表需要很长时间。另外考虑一下我只想提取国家和城市列表及其信息框的事实 - 转储中的很多信息对我来说毫无用处。

  3. 制作我自己的本地表并创建一个 cron [我将在此处解释为什么 cron 工作] 脚本,它会以某种方式解析维基百科上的所有国家和城市页面,并将它们转换为我可以在我的表中使用的格式。但老实说,我不需要信息框中的所有信息,因为事实上我什至可以按原样获得信息框的基本标记——这对我来说已经足够了。像:

国家名称 | 信息框原始文本

如果需要,我可以亲自提取坐标和其他细节等内容。

我什至尝试从 infochiumps 和 dbpedia 下载第三方数据集,但 infochimps 的数据集不完整,并且不包含我想要显示的所有信息 - 加上 dbpedia,我完全不知道如何处理我下载的信息框的 csv 文件恐怕它也可能不完整。

但这只是这里问题的一部分。我想要一种显示维基百科信息的方法 - 我会让所有指向维基百科的链接以及来自维基百科的好信息在周围正确显示但问题是我需要一种方法来定期更新我拥有的信息来自维基百科,所以至少我没有完全过时的数据。就像说一个可以检查的系统,如果我们有一个新的国家或新的位置,它可以解析信息并以某种方式检索它。我在这里依靠维基百科中的国家和城市类别,但坦率地说,所有这些想法都写在纸上,部分编码并且非常混乱。

我正在用 PHP 和 MySQL 编程,我的截止日期很快就要到了——鉴于上述情况和要求,遵循和实施的最佳和最实用的方法是什么。我对想法完全持开放态度——如果有人做过类似的事情,我会举个实际例子——我很想听听:D

4

4 回答 4

2

我能想到的几件事:

  1. 只需在您网站的 iframe 中显示维基百科数据。

  2. 使用 Curl 从 wikipedia 获取 html,然后使用自定义样式表对其进行样式设置和/或隐藏您不想显示的部分。

试图真正解析 HTML 并提取出你想要的部分将是一个巨大的痛苦,并且很可能必须为每个城市定制。最好先做一些简单的工作,然后再回去改进它,如果你决定你真的需要的话。

于 2009-06-16T12:33:08.953 回答
2

如何使用维基百科地理编码网络服务之一

有几个可用的地方,例如,邮政编码和国家/地区可以传递到简短的文章摘要和维基百科文章的链接。

如果这样就足够了。

于 2009-06-16T12:37:03.780 回答
1

我建议以下

  • 在您的数据库中创建城市(城市)时从维基百科查询城市
  • 解析数据,使用上次更新的时间戳存储本地副本
  • 访问时,如有必要,更新数据。您可以显示带有水印的旧版本,说明它已经存在……几天了,现在正在更新。然后在更新完成后更改为新获取的。你说你使用的是AJAX,所以不会有问题

它将最大限度地减少对维基百科的查询,即使无法访问维基百科,您的服务也不会显示空白页面。

于 2009-06-16T13:44:21.523 回答
0

看看 DBPedia,它包含以 CSV 格式很好地提取 Wikipedia 数据。

于 2010-05-07T09:57:49.913 回答