Pregunta

Soy bastante nuevo en MediaWiki, y ahora tengo un pequeño problema. Tengo el título de una página Wiki, y quiero obtener solo el texto de dicha página usando api.php , pero todo lo que he encontrado en la API es una forma de obtener el contenido Wiki de la página (con marcado wiki). Usé esta solicitud HTTP ...

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

Pero solo necesito el contenido textual, sin el marcado Wiki. ¿Es eso posible con la API de MediaWiki?

¿Fue útil?

Solución

No creo que sea posible usar la API para obtener solo el texto.

Lo que funcionó para mí fue solicitar la página HTML (usando la URL normal que usarías en un navegador) y quitar las etiquetas HTML debajo del contenido div.

EDITAR:

He tenido buenos resultados usando HTML Parser para Java. Tiene ejemplos de cómo quitar etiquetas HTML bajo un DIV dado.

Otros consejos

Use action = parse para obtener el html:

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

Una forma de obtener el texto del html sería cargarlo en un navegador y recorrer los nodos, buscando solo los nodos de texto, usando JavaScript.

La extensión TextExtracts de la API hace lo que está preguntando. Use prop = extract para obtener una respuesta limpia. Por ejemplo, este enlace le dará limpieza texto para el artículo de desbordamiento de pila . Lo que también es bueno es que todavía incluye etiquetas de sección, por lo que puede identificar secciones individuales del artículo.

Solo para incluir un enlace visible en mi respuesta, el enlace anterior se ve así:

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

Editar: como mencionó Amr, TextExtracts es una extensión para MediaWiki, por lo que no estará necesariamente disponible para todos los sitios de MediaWiki.

Agregar ? action = raw al final de una página de MediaWiki devuelve el contenido más reciente en un formato de texto sin formato. Por ejemplo: - https://en.wikipedia.org/wiki/Main_Page?action=raw

Puede obtener los datos wiki en formato de texto de la API utilizando el parámetro explaintext . Además, si necesita acceder a la información de muchos títulos, puede obtener todos los datos wiki de los títulos en una sola llamada. Use el carácter de barra | para separar cada título. Por ejemplo, esta llamada a la API devolverá los datos tanto de " Google " y "Yahoo" páginas:

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

Parámetros:

  • explaintext : Devuelve extractos como texto sin formato en lugar de HTML limitado.
  • exlimit = max : Devuelve más de un resultado. El máximo es actualmente 20.
  • exintro : Devuelve solo el contenido antes de la primera sección. Si desea los datos completos, simplemente elimínelos.
  • redirects = : resuelve problemas de redireccionamiento.

Los usuarios de Python que vengan a esta pregunta podrían estar interesados ??en wikipedia módulo ( docs ):

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

Todos los formatos, excepto las secciones ( == ) se eliminan.

Las páginas Wiki sin ningún símbolo de formato realmente no tendrían mucho sentido en muchos casos.

Puede eliminar el formato usted mismo, si lo desea, pero romperá algunas cosas en el proceso.

(A menos que esté creando algo como un motor de búsqueda, en cuyo caso solo necesitará las partes de texto y puede ignorar completamente los símbolos de formato)

Puede hacer una cosa después de que los contenidos se introduzcan en su página: puede usar la función PHP strip_tags () para eliminar las etiquetas HTML.

scroll top