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?
Al agregar ?action=raw
al final de una página de MediaWiki, devuelve el contenido más reciente en un formato de texto sin formato. Ej .: - https://en.wikipedia.org/wiki/Main_Page?action=raw
Esa es la forma más sencilla: http://en.wikipedia.org/w/api.php?format=xml&action=query&titles=Albert%20Einstein&prop=revisions&rvprop=content
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)
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.
Use action = render para obtener la página más limpia posible:
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