2012-04-14 13 views
1

Infobox内wikipedia内の属性値の中には中括弧{{}}の中にあるものもあります。中括弧の内側にあり、ウィキペディアのウェブページに表示されています。 私はこれらもテンプレートです。誰かが私にいくつかのリンクを教えてくれますか、それとも私はどのように対処しますか?インフォボックス内の{{}}(中括弧)内の属性値を解析する方法

+0

私はShoeMakerに同意します:あなたは正確に何をしたいのですか?それに応じて、それに "対処"する方法がいろいろあるからです。 – svick

+0

私は映画、書籍、テレビ番組の情報を抽出する必要があります。国があると仮定すると、国の値 "UK"またはUSが必要です。 –

+0

dbpediaはありますが、すでに使用しています。値が見つからない場合はスクリプトを作成し、wikipediaのページを見てください –

答えて

2

二重中かっこ{{}}は、ある種の魔法の単語、変数、パーサー関数、またはテンプレートへの呼び出しを定義します。MediaWiki.org/.../Manual:Magic_wordsにヘルプがあります。 |のような小さな行は、pipesと呼ばれ、wikicore解析エンジンが魔法の単語、変数、パーサ関数、またはテンプレートで使用できるパラメータを定義できるセパレータとして使用されます。

1

この同じ問題を抱えている人を助けてください。あなたはPHPとインフォボックスを解析されます考えると 、あなたはこれを使用することができます。 http://www.mywiki.com/wiki/api.php?format=xml&action=query&titles=PAGE_TITLE_THAT_CONTAINS_AN_INFOBOX&prop=revisions&rvprop=content&rvgeneratexml=1

「rvgeneratexmlが」に設定されている 真(1)、これはXMLノード<rev>は、インフォボックスを含む属性「解析ツリー」を生成ようになりますXML形式の情報。

次に、PHPで、あなたはSimpleXMLをして全体の情報(<rev></api>含む<api>すべて)をロードすることができます

$xml = simplexml_load_file($url); 

その後、あなたは「解析ツリー」属性を取得して文字列をロードすることにより、テンプレートの情報を読み込むことができます:

0:

$template = simplexml_load_string($xml->query->pages->page->revisions->rev->attributes()->parsetree); 
$template = $template->template; // If more than 1 template, check template[0], [1], etc 

その後、正しい構造を使用することによって、あなたのような何かを要素にアクセスすることができます

次に、$filmには、映画の名前(->nameがパラメータの名前で、->valueがその値です)が含まれます。

関連する問題