2012-04-14 10 views
1

Innerhalb der Infobox bei Wikipedia sind einige Attributwerte auch in geschweiften Klammern {{}} .. Einige Zeit haben sie auch Lins .. Ich brauche Werte innerhalb der geschweiften Klammern, die auf der Wikipedia-Webseite angezeigt werden. Ich lese diese sind auch Vorlagen .. Kann mir jemand einen Link geben oder mich leiten, wie gehe ich damit um?Wie man den Attributwert innerhalb {{}} (geschweifter Klammern) innerhalb einer Infobox analysiert

+0

Ich stimme ShoeMaker zu: Könnten Sie uns erklären, was genau Sie wollen? Weil es verschiedene Möglichkeiten gibt, wie man damit "umgeht". – svick

+0

Nun, ich muss Infobox von Film, Bücher und TV-Shows extrahieren .. Wie angenommen, es gibt ein Land, ich brauche nur Landeswert "UK" oder US –

+0

Ich weiß dbpedia ist da, aber ich habe es bereits verwendet. Jetzt schreibe ich ein Skript, wenn der Wert nicht gefunden wird, dann wird es auf der Wikipedia-Seite aussehen –

Antwort

2

Doppel-geschweifte Klammern {{}} Definieren Sie einen Aufruf für eine Art von Zauberwort, Variable, Parser-Funktion oder Vorlage .. Hilfe kann auf MediaWiki.org/.../Manual:Magic_words gefunden werden. Die kleinen Linien, die wie | aussehen werden pipes genannt und werden verwendet, um als Separatoren, die das wikicore Parsing-Engine definieren Parameter ermöglichen, die mit dem Zauberwort, Variable, Parser-Funktion oder eine Vorlage verwendet werden können ..

1

Hoffentlich wird helfe allen, die auf dasselbe Problem stoßen. Betrachtet man die infobox mit PHP parsen, können Sie diese verwenden: 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‘ auf true (1) festgelegt wird, wird dies die XML-Knoten machen <rev> ein Attribut „Syntaxbaum“ erzeugen die infobox enthält Informationen im XML-Format.

Dann in PHP, können Sie die ganze Information laden (<api> alles inklusive <rev></api>) mit SimpleXML:

$xml = simplexml_load_file($url); 

Dann können Sie die Informationen der Vorlage laden, indem Sie den „Syntaxbaum“ -Attribut bekommen und das Laden der Zeichenfolge mit :

$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 

Dann wird durch die richtige Struktur verwenden, können Sie die Elemente mit so etwas wie Zugang:

if ($template->part[0]->name='name') 
    $film = $template->part[0]->value; 

Dann enthält $film den Filmnamen (->name ist der Name des Parameters und ->value ist sein Wert).