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?

War es hilfreich?

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 Java

Ich 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

Python-Benutzer auf diese Frage kommen könnte in der wikipedia Modul ( docs ):

import wikpedia
wikipedia.set_lang('de')
page = wikipedia.page('Wikipedia')
print(page.content)

Jede Formatierung, mit Ausnahme der Abschnitte (==) ist gestreift weg.

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

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top