Solo necesito recuperar el primer párrafo de una página de Wikipedia. El contenido debe tener formato html, listo para mostrarse en mis sitios web (por lo tanto, ¡NO HAY BBCODE o CÓDIGO especial WIKIPEDIA!)
api
wikipedia
wikipedia-api
brillar
fuente
fuente
Respuestas:
¡Hay una manera de obtener toda la "sección de introducción" sin ningún análisis html! Similar a la respuesta de AnthonyS con un
explaintext
parámetro adicional , puede obtener el texto de la sección de introducción en texto plano.Consulta
Obteniendo la introducción de Stack Overflow en texto plano:
https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=Stack%20Overflow
Respuesta JSON
(advertencias despojadas)
Documentación: API: query / prop = extractos
Editar: agregado
&redirects=1
como se recomienda en los comentarios.fuente
$extract = current((array)$data->query->pages)->extract;
. pero "Aviso: Intentando obtener propiedad de no objeto" sigue apareciendo.En realidad, hay un accesorio muy agradable llamado extractos que se puede usar con consultas diseñadas específicamente para este propósito. Los extractos le permiten obtener extractos de artículos (texto de artículo truncado). Hay un parámetro llamado exintro que se puede usar para recuperar el texto en la sección cero (sin recursos adicionales como imágenes o cuadros de información). También puede recuperar extractos con una granularidad más fina, como por un cierto número de caracteres ( intercambiadores ) o por un cierto número de oraciones ( exenciones )
Aquí hay una consulta de muestra http://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow y el sandbox API http://en.wikipedia.org/wiki/ Especial: ApiSandbox # action = query & prop = extractos & format = json & exintro = & title = Stack% 20Overflow para experimentar más con esta consulta.
Tenga en cuenta que si desea el primer párrafo específicamente, aún necesita hacer un análisis adicional como se sugiere en la respuesta elegida. La diferencia aquí es que la respuesta devuelta por esta consulta es más corta que algunas de las otras consultas de API sugeridas porque no tiene activos adicionales como imágenes en la respuesta de API para analizar.
fuente
Desde 2017 Wikipedia proporciona una API REST con mejor almacenamiento en caché. En la documentación puede encontrar la siguiente API que se adapta perfectamente a su caso de uso. (tal como lo utiliza la nueva función Vistas previas de página )
https://en.wikipedia.org/api/rest_v1/page/summary/Stack_Overflow
devuelve los siguientes datos que se pueden usar para mostrar un resumen con una miniatura pequeña:De manera predeterminada, sigue las redirecciones (para que
/api/rest_v1/page/summary/StackOverflow
también funcione), pero esto se puede deshabilitar con?redirect=false
Si necesita acceder a la API desde otro dominio, puede configurar el encabezado CORS con
&origin=
(por ejemplo&origin=*
)Actualización 2019: la API parece devolver más información útil sobre la página.
fuente
"other_tags" : "\"addr:country\"=>\"CW\",\"historic\"=>\"ruins\",\"name:nl\"=>\"Riffort\",\"wikidata\"=>\"Q4563360\",\"wikipedia\"=>\"nl:Riffort\""
¿Podemos obtener el extracto ahora por el QID?Este código le permite recuperar el contenido del primer párrafo de la página en texto sin formato.
Parte de esta respuesta proviene de aquí y, por lo tanto, de aquí . Consulte la documentación de la API de MediaWiki para obtener más información.
fuente
Sí hay. Por ejemplo, si desea obtener el contenido de la primera sección del artículo Desbordamiento de pila , utilice una consulta como esta:
http://en.wikipedia.org/w/api.php?format=xml&action=query&prop=revisions&titles=Stack%20Overflow&rvprop=content&rvsection=0&rvparse
Las partes significan esto:
format=xml
: Devuelve el formateador de resultados como XML. Otras opciones (como JSON) están disponibles. Esto no afecta el formato del contenido de la página en sí, solo el formato de datos adjunto.action=query&prop=revisions
: Obtenga información sobre las revisiones de la página. Como no especificamos qué revisión, se usa la última.titles=Stack%20Overflow
: Obtenga información sobre la páginaStack Overflow
. Es posible obtener el texto de más páginas de una vez, si separa sus nombres por|
.rvprop=content
: Devuelve el contenido (o texto) de la revisión.rvsection=0
: Devuelve solo contenido de la sección 0.rvparse
: Devuelve el contenido analizado como HTML.Tenga en cuenta que esto devuelve toda la primera sección, incluidas las notas de sombrero ("Para otros usos ..."), cuadros de información o imágenes.
Hay varias bibliotecas disponibles para varios idiomas que facilitan el trabajo con API, puede ser mejor para usted si usa una de ellas.
fuente
&redirects=true
al final del enlace garantiza que llegue al artículo de destino, si existe.Este es el código que estoy usando ahora para un sitio web que estoy haciendo que necesita obtener los párrafos principales / resumen / sección 0 de artículos de Wikipedia, y todo se hace dentro del navegador (javascript del lado del cliente) gracias a la magia. de JSONP! -> http://jsfiddle.net/gautamadude/HMJJg/1/
Utiliza la API de Wikipedia para obtener los párrafos iniciales (llamados sección 0) en HTML de la siguiente manera: http://en.wikipedia.org/w/api.php?format=json&action=parse&page=Stack_Overflow&prop=text§ion=0&callback=?
Luego elimina el HTML y otros datos no deseados, proporcionándole una cadena limpia de un resumen del artículo, si lo desea puede, con un pequeño ajuste, obtener una etiqueta "p" html alrededor de los párrafos iniciales, pero en este momento solo hay una nueva línea personaje entre ellos.
Código:
fuente
Esta url devolverá un resumen en formato xml.
He creado una función para buscar la descripción de una palabra clave de wikipedia.
fuente
También puede obtener contenido como el primer pagagraph a través de DBPedia que toma contenido de Wikipedia y crea información estructurada a partir de él (RDF) y lo pone a disposición a través de una API. La API DBPedia es SPARQL (basada en RDF) pero genera JSON y es bastante fácil de ajustar.
Como ejemplo, aquí hay una biblioteca JS súper simple llamada WikipediaJS que puede extraer contenido estructurado que incluye un primer párrafo de resumen: http://okfnlabs.org/wikipediajs/
Puede leer más al respecto en esta publicación de blog: http://okfnlabs.org/blog/2012/09/10/wikipediajs-a-javascript-library-for-accessing-wikipedia-article-information.html
El código de la biblioteca JS se puede encontrar aquí: https://github.com/okfn/wikipediajs/blob/master/wikipedia.js
fuente
El
abstract.xml.gz
basurero suena como el que quieres.fuente
Si solo está buscando el texto que luego puede dividir pero no desea utilizar la API, consulte en.wikipedia.org/w/index.php?title=Elephant&action=raw
fuente
Mi enfoque fue el siguiente (en PHP):
$utf8html
podría necesitar más limpieza, pero eso es básicamente todo.fuente
Probé la solución de @Michael Rapadas y @ Krinkle, pero en mi caso tuve problemas para encontrar algunos artículos dependiendo de la capitalización. Como aquí:
https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&exsentences=1&explaintext=&titles=Led%20zeppelin
Tenga en cuenta que trunqué la respuesta con
exsentences=1
Aparentemente, la "normalización del título" no funcionaba correctamente:
Sé que podría haber solucionado el problema de las mayúsculas fácilmente, pero también existía el inconveniente de tener que lanzar el objeto a una matriz.
Entonces, como realmente quería el primer párrafo de una búsqueda bien conocida y definida (sin riesgo de obtener información de otros artículos) lo hice así:
https://en.wikipedia.org/w/api.php?action=opensearch&search=led%20zeppelin&limit=1&format=json
Tenga en cuenta que en este caso hice el truncamiento con
limit=1
De esta manera:
Pero tenemos que seguir siendo cuidadosos con la capitalización de nuestra búsqueda.
Más información: https://www.mediawiki.org/wiki/API:Opensearch
fuente