Get Text Content von Mediawiki Seite über API
-
06-07-2019 - |
Frage
Ich bin recht neu auf MediaWiki, und jetzt habe ich ein bisschen ein Problem. Ich habe den Titel einiger Wiki-Seite, und ich möchte nur den Text einer die Seite bekommen mit api.php , aber alles, was ich in der API gefunden haben, ist eine Möglichkeit, die Wiki Inhalt zu erhalten der Seite (mit Wiki-Markup). Ich habe diese HTTP-Anforderung ...
/api.php?action=query&prop=revisions&rvlimit=1&rvprop=content&format=xml&titles=test
Aber ich brauche nur den Textinhalt, ohne das Wiki Markup. Ist das möglich mit dem MediaWiki-API?
Lösung
Ich glaube nicht, ist es möglich, mithilfe der API nur den Text erhalten.
Was für mich gearbeitet hat war die HTML-Seite (mit der normalen URL, die Sie in einem Browser verwenden würden) beantragen und die HTML-Tags unter dem Inhalt div Streifen aus.
EDIT:
mit HTML-Parser für JavaIch habe gute Ergebnisse hat. Es hat Beispiele dafür, wie HTML-Tags unter einem bestimmten DIV abzustreifen aus.
Andere Tipps
Mit action=parse
erhalten die HTML:
/api.php?action=parse&page=test
Eine Möglichkeit, den Text aus dem HTML zu bekommen wäre es in einem Browser zu laden und die Knoten laufen, nur für die Textknoten suchen, mit Hilfe von JavaScript.
Die TextExtracts Erweiterung der API tut, was Sie fragen. Verwenden Sie prop=extracts
zu bekommen aufgeräumt Antwort. Zum Beispiel diesen Link werden Sie gereinigt up Text für den Artikel Stack-Überlauf. Was auch schön ist, dass es immer noch Abschnitt Tags enthält, so dass Sie einzelne Abschnitte des Artikels identifizieren können.
Sie einfach einen sichtbaren Link in meiner Antwort enthalten, die oben genannten Link wie folgt aussieht:
/api.php?format=xml&action=query&prop=extracts&titles=Stack%20Overflow&redirects=true
Edit: Wie Amr erwähnt, TextExtracts ist ein Erweiterung auf MediaWiki, so dass es für jede MediaWiki-Website nicht unbedingt verfügbar sein wird,
. Hinzufügen ?action=raw
am Ende einer MediaWiki-Seite zurückkehrt die neuesten Inhalte in einem rohen Textformat. ZB: - https://en.wikipedia.org/wiki/Main_Page?action=raw
Sie können die Wiki-Daten im Textformat von der API erhalten, indem die explaintext
Parameter. Plus, wenn Sie viele Titel zugreifen müssen Wiki Daten in einem einzigen Aufruf Informationen können Sie alle Titel bekommen. Verwenden Sie das Pipezeichen |
jeden Titel zu trennen. Zum Beispiel gibt diesen API-Aufruf die Daten sowohl von den „Google“ und „Yahoo“ Seiten:
http://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exlimit=max&explaintext&exintro&titles=Yahoo|Google&redirects=
Parameter:
-
explaintext
: Return Extrakte als Klartext statt begrenzten HTML .
-
exlimit=max
: Zurück mehr als ein Ergebnis. Die max ist derzeit 20. -
exintro
: Rückkehr nur den Inhalt vor dem ersten Abschnitt. Wenn Sie die vollständigen Daten wünschen, gerade diese entfernen. -
redirects=
. Lösen Sie Probleme umleiten
Das ist die einfachste Art und Weise: http://en.wikipedia.org /w/api.php?format=xml&action=query&titles=Albert%20Einstein&prop=revisions&rvprop=content
Verwenden action = macht die sauberste mögliche Seite zu bekommen:
https://wiki.eclipse.org/Tip_of_the_Day/Eclipse_Tips/Now_where_was_I ? action = render
vs
https://wiki.eclipse.org/Tip_of_the_Day/Eclipse_Tips/Now_where_was_I
Wiki-Seiten ohne Formatierungssymbole nicht wirklich machen viel Sinn in vielen Fällen.
Sie können die Formatierung sich Streifen aus, wenn Sie wollen, aber Sie werden ein paar Sachen im Prozess brechen.
(Es sei denn, Sie so etwas wie eine Suchmaschine erstellen, in dem Fall, dass Sie nur die Textteile müssen und ignorieren können Symbole vollständig Formatierung)
Sie können eine Sache tun, nachdem der Inhalt in der Seite gebracht werden - Sie die PHP-Funktion strip_tags()
verwenden können, um die HTML-Tags zu entfernen