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
Wie man den Attributwert innerhalb {{}} (geschweifter Klammern) innerhalb einer Infobox analysiert
Antwort
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 ..
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).
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
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 –
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 –