2011-01-11 5 views
2

Hey there、 PHPスクリプトからAPI(http://en.wikipedia.org/w/api.php)を使ってWikipediaの記事からデータを抽出しようとしていますが、実際のコンテンツの一部しか得られないようです。例えば は、ときしよう:Wikipedia APIは、ほんのわずかなデータしか返しません。

$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参照)。 この制限の原因は何ですか?どのように修正できますか?

答えて

6

API manualを見ると、送信するリンクの数を指定するpllimitオプションがあることがわかります。ボットアカウントをお持ちの場合は、一度に500または5000を取得できます。

データダンプの最後に、次の情報が表示されます。[plcontinue] => 6678|0|Albino)。この情報をサーバーに提供し、その時点からページからさらに多くのリンクを取得することができます。だから、あなたが作る次のクエリは、サーバがplcontinue値を返さないまで、あなたはこれをやって維持する必要があります

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

だろう。

+0

Alright。これは完璧に動作します!本当にありがとう ! – Orteil

関連する問題