2011-08-25 31 views

Respuesta

34

Consulte esta sección en la MediaWiki docs

Estos son los parámetros clave.

prop=revisions&rvprop=content&rvsection=0 

rvsection = 0 especifica que solo se devuelve la sección principal.

Vea este ejemplo.

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&rvsection=0&titles=pizza

Para obtener el HTML, puede utilizar de manera similar usar action = analizar http://en.wikipedia.org/w/api.php?action=parse&section=0&prop=text&page=pizza

Nota, que tendrá que se deben eliminar cualquier plantilla o infoboxes.

+0

¿Tengo que enviar una acción = analizar la consulta después de obtener el valor de eso? – bbnn

+2

Quiero obtener un texto limpio, ¿debería escribir el analizador por mi cuenta? o hay alguna consulta API para hacerlo? Gracias – bbnn

+0

así que tengo que escribir mi propio analizador desde aquí, ¡muchas gracias! – bbnn

3

Si necesita hacer esto para una gran cantidad de artículos, en lugar de consultar el sitio web directamente, considere descargar un volcado de base de datos de Wikipedia y luego acceder a él a través de una API como JWPL.

24

Vea Is there a clean wikipedia API just for retrieve content summary? para otras soluciones propuestas. Aquí es uno que he sugerido:

En realidad, hay una muy buena prop llamada extracts que puede ser utilizado con las consultas diseñadas específicamente para este propósito. Los extractos le permiten obtener extractos de artículos (texto truncado del artículo). Hay un parámetro llamado exintro que se puede usar para recuperar el texto en la sección zeroth (sin recursos adicionales, como imágenes o cuadros de información). También puede recuperar extractos con granularidad más fina, como por un cierto número de caracteres (exchars) o por un cierto número de frases (exsentences)

Aquí es una consulta muestrahttp://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow y la API sandboxhttp://en.wikipedia.org/wiki/Special:ApiSandbox#action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow para experimentar más con esta consulta.

Tenga en cuenta que si desea específicamente el primer párrafo, aún necesita obtener la primera etiqueta. Sin embargo, en esta llamada API no hay elementos adicionales como imágenes para analizar. Si está satisfecho con este resumen introductorio, puede recuperar el texto ejecutando una función como php's strip_tag que elimina las etiquetas html.

1

Puede descargar la base de datos de Wikipedia directamente y analizar todas las páginas en XML con Wiki Parser, que es una aplicación independiente. El primer párrafo es un nodo separado en el XML resultante.

Como alternativa, puede extraer el primer párrafo de su salida de texto sin formato.

12

lo hago de esta manera:

https://en.wikipedia.org/w/api.php?action=opensearch&search=bee&limit=1&format=json

La respuesta que se obtiene es una matriz con los datos, fácil de analizar:

[ 
    "bee", 
    [ 
    "Bee" 
    ], 
    [ 
    "Bees are flying insects closely related to wasps and ants, known for their role in pollination and, in the case of the best-known bee species, the European honey bee, for producing honey and beeswax." 
    ], 
    [ 
    "https://en.wikipedia.org/wiki/Bee" 
    ] 
] 

para obtener sólo el primer párrafo limit=1 es lo necesitas.

2
<script>  
    function dowiki(place) { 
     var URL = 'https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext='; 

     URL += "&titles=" + place; 
     URL += "&rvprop=content"; 
     URL += "&callback=?"; 
     $.getJSON(URL, function (data) { 
      var obj = data.query.pages; 
      var ob = Object.keys(obj)[0]; 
      console.log(obj[ob]["extract"]); 
      try{ 
       document.getElementById('Label11').textContent = obj[ob]["extract"]; 
      } 
      catch (err) { 
       document.getElementById('Label11').textContent = err.message; 
      } 

     }); 
    } 
</script> 
+0

considere agregar un poco de descripción textual a su respuesta :) (es decir, qué significa en comparación con otros) –

1

Puede usar JQuery para hacer eso. Primero crea la url con los parámetros apropiados. Compruebe esto link para entender lo que significan los parámetros. Luego use el método $.ajax() para recuperar los artículos. Tenga en cuenta que wikipedia no permite la solicitud de origen cruzado. Es por eso que estamos usando dataType : jsonp en la solicitud.

var wikiURL = "https://en.wikipedia.org/w/api.php"; 
wikiURL += '?' + $.param({ 
    'action' : 'opensearch', 
    'search' : 'your_search_term', 
    'prop' : 'revisions', 
    'rvprop' : 'content', 
    'format' : 'json', 
    'limit' : 10 
}); 

$.ajax({ 
    url: wikiURL, 
    dataType: 'jsonp', 
    success: function(data) { 
     console.log(data); 
    } 
}); 
Cuestiones relacionadas