www software premise medi from for data mediawiki wikipedia-api mediawiki-api

mediawiki - premise - wiki software



Obtener contenido de texto de la página mediawiki a través de API (10)

Soy bastante nuevo en MediaWiki, y ahora tengo un pequeño problema. Tengo el título de alguna página de Wiki, y quiero obtener solo el texto de una página dicha usando api.php , pero todo lo que he encontrado en la API es una forma de obtener el contenido de Wiki de la página (con el marcado wiki ). Utilicé 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?




La extensión TextExtracts de la API hace lo que está pidiendo. Use prop=extracts para obtener una respuesta limpia. Por ejemplo, este enlace le dará un texto limpio 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 de arriba se ve así:

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

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


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

Si lo desea, puede eliminar el formato usted mismo, 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)


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

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

Cada formato, excepto las secciones ( == ) se elimina.


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

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

EDITAR:

He tenido buenos resultados con HTML Parser para Java. Tiene ejemplos de cómo eliminar las etiquetas HTML en un DIV determinado.


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


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

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 de 20.
  • exintro : devuelve solo el contenido antes de la primera sección. Si desea los datos completos, simplemente elimine esto.
  • redirects= : Resuelve problemas de redireccionamiento.

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, utilizando JavaScript.