wikipedia dbpedia wikipedia-api structured-data wikidata

wikipedia - dbpedia search



¿Cómo extraer información de un cuadro de información de Wikipedia? (1)

La manera incorrecta: tratando de analizar HTML

Use (cURL / jQuery / file_get_contents / request / wget / more jQuery ) para obtener el código del artículo HTML del artículo, luego use un analizador DOM para extraer table.infobox tr[3] td / use una expresión regular .

Esta es realmente una mala idea la mayor parte del tiempo. El código HTML de Wikipedia no es particularmente fácil de analizar (especialmente los cuadros de información que son un sistema de plantillas escritas a mano), la estructura exacta cambia de cuadro de información a cuadro de información, y la estructura de un cuadro de información puede cambiar con el tiempo. También puede perderse algunas funciones que de otro modo estarían disponibles, como la internacionalización.

La otra forma incorrecta: tratar de analizar wikitexto

De un vistazo, parece que el texto wikitexto de algunos artículos es una representación bastante sencilla del cuadro de información:

{{ Infobox Foo | param1 = bar | param2 = 123 ...

En realidad, ese no es el caso. Las plantillas son "recursivas", por lo que puede encontrarse con cosas como param1 = {{convert|10|km|mi}} ; los parámetros de la plantilla pueden contener wikitexto complejo o marcado HTML; Es posible que falten algunos parámetros del artículo wikitexto y que la plantilla haya extraído de una subpágina u otro repositorio de datos. Descubrir dónde comienza y dónde termina un parámetro podría no ser una tarea simple si contiene otras plantillas que tienen sus propios parámetros.

La forma ideal: usar una fuente de datos estructurados

Hay varios proyectos para proporcionar la información contenida en los cuadros de información de Wikipedia en forma estructurada; los dos grandes son Wikidata y DBpedia.

Wikidata es un proyecto para construir una base de conocimiento que contiene datos estructurados; es mantenido por el mismo movimiento global que construyó Wikipedia, por lo que la información está en proceso de ser trasladada. Este es un proceso manual, por lo que no toda la información en Wikipedia está disponible a través de Wikidata, por otro lado, hay mucha información en Wikidata pero no en Wikipedia. Puede encontrar la página Wikidata de un artículo y ver qué información contiene siguiendo el enlace del elemento Wikidata en la barra de herramientas de la izquierda en la página del artículo; mediante programación, puede acceder a la información de Wikidata utilizando el módulo API wbgetentities ( sandbox , explicación de conceptos ), por ejemplo, wikidata.org/w/api.php?action=wbgetentities&sites=enwiki&titles=Albert_Einstein . También hay un punto final SPARQL , volcados de bases de datos y clientes en PHP , Java y Python .

DBPedia es un proyecto para recolectar información de la caja de información de Wikipedia por medios automatizados y publicarla en una forma estructurada. Puede encontrar la página de DBPedia para un artículo de Wikipedia en http://dbpedia.org/page/<Wikipedia article name> , por ejemplo, http://dbpedia.org/page/Albert_Einstein . Tiene muchos formatos de datos, volcados, un punto final SPARQL y varias otras cosas .

Las formas equivocadas se hacen bien

Si la información que necesita no está disponible a través de Wikidata o DBpedia, todavía hay formas semiestructuradas de extraer datos de los cuadros de información. Para la extracción basada en HTML, puede usar la API de contenido REST de Wikipedia (por ejemplo, https://en.wikipedia.org/api/rest_v1/page/html/Albert_Einstein ) que devuelve un HTML más rico y semántico que el utilizado en las páginas de artículos normales , y conserva cierta información sobre la estructura de la plantilla.

Alternativamente, puede comenzar desde wikitext y analizarlo en un árbol de sintaxis utilizando el módulo Python ( docs ) mwparserfromhell más simple del lado del cliente o la API Parsoid JS más potente que interactúa con el servicio de contenido REST de Wikipedia.

Una biblioteca de Python de nivel superior que intenta extraer el contenido del wptools de wikitext es wptools .

Existe este elegante infobox en <algún artículo de Wikipedia>. ¿Cómo obtengo el valor de <este campo y ese>?