【问题标题】:Wikipedia API returns only a tiny set of data?Wikipedia API 只返回一小部分数据?
【发布时间】:2011-01-11 22:32:30
【问题描述】:

你好, 我正在尝试使用 PHP 脚本中的 API (http://en.wikipedia.org/w/api.php) 从 Wikipedia 文章中提取数据,但我似乎总是只获得真实内容的一小部分。 例如,尝试时:

$page=get_web_page("http://en.wikipedia.org/w/api.php?action=query&titles=Cat&prop=links&format=txt");
echo $page["content"];

这就是我得到的:

Array ( [query] => Array ( [pages] => Array ( [6678] => Array ( [pageid] => 6678 [ns] => 0 [title] => Cat [links] => Array ( [0] => Array ( [ns] => 0 [title] => 10th edition of Systema Naturae ) [1] => Array ( [ns] => 0 [title] => 3-mercapto-3-methylbutan-1-ol ) [2] => Array ( [ns] => 0 [title] => Abyssinian (cat) ) [3] => Array ( [ns] => 0 [title] => Actinidia polygama ) [4] => Array ( [ns] => 0 [title] => Adaptive radiation ) [5] => Array ( [ns] => 0 [title] => African Wildcat ) [6] => Array ( [ns] => 0 [title] => African wildcat ) [7] => Array ( [ns] => 0 [title] => Afro-Asiatic languages ) [8] => Array ( [ns] => 0 [title] => Age of Discovery ) [9] => Array ( [ns] => 0 [title] => Agouti signalling peptide ) ) ) ) ) [query-continue] => Array ( [links] => Array ( [plcontinue] => 6678|0|Albino ) ) ) 

我正在请求“猫”文章的完整链接列表,但我似乎只获得了按字母顺序排列的前 10 个链接。 无论我选择哪种格式,甚至是 API 本身,都会发生这种情况(请参阅http://en.wikipedia.org/w/api.php?action=query&titles=Cat&prop=links)。 是什么导致了这种限制,我该如何解决?

【问题讨论】:

    标签: php api mediawiki wikipedia


    【解决方案1】:

    如果您查看API manual,您会看到有一个pllimit 选项,它指定要发送多少个链接。如果您有机器人帐户,您可以一次性获得 500 或 5000。

    您将在提供的数据转储末尾看到以下内容:[plcontinue] => 6678|0|Albino )。您可以将此信息提供给服务器,并从该页面获取更多链接,从该点开始。因此,您进行的下一个查询将是

    $page=get_web_page("http://en.wikipedia.org/w/api.php?action=query&titles=Cat&prop=links&format=txt&plcontinue=6678|0|Albino");
    

    您需要继续这样做,直到服务器不返回 plcontinue 值。

    【讨论】:

      猜你喜欢
      • 2018-06-17
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-21
      • 1970-01-01
      • 2014-02-23
      相关资源
      最近更新 更多