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

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

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

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

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

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

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

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

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

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

如果我愿意,我可以亲自提取坐标和其他详细信息等内容。

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

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

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

有帮助吗?

解决方案

我建议如下

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

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

其他提示

我能想到的几件事:

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

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

  3. 尝试实际解析HTML并拉出你想要的部分将是一个巨大的痛苦,并且最有可能必须为每个城市定制。最好让简单的工作变得简单,然后如果你确定需要的话,可以在以后改进它。

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

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

如果那就够了。

看看DBPedia,它包含了CSV格式的维基百科数据的很好的提取。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top