petroleo - ¿El API de Wikipedia admite búsquedas de una plantilla específica?
wikipedia api python (3)
Puede usar la consulta embeddedin
para encontrar todas las páginas que incluyen la plantilla:
curl ''http://en.wikipedia.org/w/api.php?action=query&list=embeddedin&eititle=Template:Persondata&eilimit=5&format=xml''
Que te atrapa:
<?xml version="1.0"?>
<api>
<query>
<embeddedin>
<ei pageid="307" ns="0" title="Abraham Lincoln" />
<ei pageid="308" ns="0" title="Aristotle" />
<ei pageid="339" ns="0" title="Ayn Rand" />
<ei pageid="340" ns="0" title="Alain Connes" />
<ei pageid="344" ns="0" title="Allan Dwan" />
</embeddedin>
</query>
<query-continue>
<embeddedin eicontinue="10|Persondata|595" />
</query-continue>
</api>
Vea los documentos completos en mediawiki.org.
Editar Usar consulta embeddedin
lugar de backlinks
(que no cubre inclusiones de plantilla)
¿Es posible consultar la API de Wikipedia para artículos que contienen una plantilla específica? La documentación no describe ninguna acción que filtrar los resultados de búsqueda a las páginas que contienen una plantilla. Específicamente, estoy buscando páginas que contengan Template:Persondata
. Después de eso, espero poder recuperar solo esa plantilla específica para rellenar datos de genealogía para el proyecto openancestry.org .
La siguiente consulta muestra que la página de Albert Einstein contiene la plantilla Persondata, pero no devuelve el contenido de la plantilla, y no sé cómo obtener una lista de títulos de página que contienen la plantilla. http://en.wikipedia.org/w/api.php?action=query&prop=templates&titles=Albert%20Einstein&tlcontinue=736|10|ParmPart
Devoluciones:
<api>
<query>
<pages>
<page pageid="736" ns="0" title="Albert Einstein">
<templates>
...
<tl ns="10" title="Template:Persondata"/>
...
</templates>
</page>
</pages>
</query>
<query-continue>
<templates tlcontinue="736|10|Reflist"/>
</query-continue>
</api>
Sospecho que no puedo obtener lo que necesito de la API, pero espero estar equivocado y que alguien ya ha abierto un camino en este camino.
El uso de embeddedin
no le permite buscar a una persona específica, la cadena de búsqueda se convierte en la Template:Persondata
.
La mejor manera que he encontrado para obtener solo personas de Wikipedia es usar list=search
y filtrar la búsqueda usando AND"Born"AND"Occupation"
:
http://en.wikipedia.org/w/api.php?action=query&list=search&srsearch="Tom Cruise"AND"Born"AND"Occupation"&format=jsonfm&srprop=snippet&srlimit=50`
Recuerde que Wikipedia está utilizando un motor de búsqueda que aún no nos permite buscar solo el título, buscará el texto completo. Puede aprovechar eso para obtener resultados más precisos.
La respuesta aceptada explica cómo enumerar páginas usando una determinada plantilla, pero si necesita buscar páginas utilizando la plantilla, puede hastemplate:
con la palabra clave hastemplate:
search: https://en.wikipedia.org/w/api.php? action = query & list = search & srsearch = hastemplate: NPOV% 20physics