Domanda

Sono abbastanza nuovo in MediaWiki e ora ho qualche problema. Ho il titolo di alcune pagine Wiki e voglio ottenere solo il testo di una determinata pagina usando api.php , ma tutto ciò che ho trovato nell'API è un modo per ottenere il contenuto Wiki della pagina (con markup wiki). Ho usato questa richiesta HTTP ...

/api.php?action=query&prop=revisions&rvlimit=1&rvprop=content&format=xml&titles=test

Ma ho bisogno solo del contenuto testuale, senza il markup Wiki. È possibile con l'API MediaWiki?

È stato utile?

Soluzione

Non credo sia possibile utilizzare l'API per ottenere solo il testo.

Quello che ha funzionato per me è stato quello di richiedere la pagina HTML (usando l'URL normale che avresti usato in un browser) e rimuovere i tag HTML sotto il div del contenuto.

EDIT:

Ho ottenuto buoni risultati usando HTML Parser per Java. Ha esempi di come eliminare i tag HTML in un determinato DIV.

Altri suggerimenti

Usa action = parse per ottenere l'html:

/api.php?action=parse&page=test

Un modo per ottenere il testo dall'html sarebbe quello di caricarlo in un browser e percorrere i nodi, cercando solo i nodi di testo, usando JavaScript.

L'estensione TextExtracts dell'API fa ciò che stai chiedendo. Usa prop = extract per ottenere una risposta pulita. Ad esempio, questo link ti darà ripulito testo per l'articolo Stack Overflow . La cosa interessante è che include ancora i tag di sezione, in modo da poter identificare singole sezioni dell'articolo.

Solo per includere un link visibile nella mia risposta, il link sopra appare come:

/api.php?format=xml&action=query&prop=extracts&titles=Stack%20Overflow&redirects=true

Modifica: come menzionato da Amr, TextExtracts è una estensione a MediaWiki, quindi non sarà necessariamente disponibile per tutti i siti MediaWiki.

L'aggiunta di ? action = raw alla fine di una pagina MediaWiki restituisce il contenuto più recente in un formato di testo non elaborato. Ad esempio: - https://en.wikipedia.org/wiki/Main_Page?action=raw

Puoi ottenere i dati del wiki in formato testo dall'API usando il parametro spiegazione . Inoltre, se è necessario accedere alle informazioni di molti titoli, è possibile ottenere tutti i dati wiki di tutti i titoli in una singola chiamata. Utilizzare il carattere pipe | per separare ciascun titolo. Ad esempio, questa chiamata API restituirà i dati sia da " Google " e " Yahoo " pagine:

http://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exlimit=max&explaintext&exintro&titles=Yahoo|Google&redirects=

Parametri:

  • spiegazione : restituisce gli estratti come testo normale anziché HTML limitato.
  • exlimit = max : restituisce più di un risultato. Il massimo è attualmente 20.
  • exintro : restituisce solo il contenuto prima della prima sezione. Se vuoi i dati completi, rimuovili.
  • redirects = : risolve i problemi di reindirizzamento.

Gli utenti di Python che arrivano a questa domanda potrebbero essere interessati al wikipedia modulo ( docs ):

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

Ogni formattazione, ad eccezione delle sezioni ( == ) è barrata.

Le pagine Wiki senza simboli di formattazione non avrebbero molto senso in molti casi.

Puoi eliminare tu stesso la formattazione, se vuoi, ma romperai alcune cose nel processo.

(A meno che tu non stia creando qualcosa come un motore di ricerca, nel qual caso avrai solo bisogno delle parti di testo e puoi ignorare completamente i simboli di formattazione)

Puoi fare una cosa dopo che i contenuti sono stati portati nella tua pagina: puoi usare la funzione PHP strip_tags () per rimuovere i tag HTML.

scroll top