0
votes

Comment obtenir des données de table en tant que lignes et colonnes de Wikipedia API?

Lorsque j'ai essayé d'obtenir des données de table comme JSON, je pouvais trouver des enfants distinctifs dans la sortie JSON de la requête suivante:

https: //fr.wikipedia .org / w / api.php? action = parse & page = list_of_football_clubs_in_india & Prop = wikitext & section = 3 & format = JSON

Je veux obtenir les rangées et les colonnes de cette table (le texte): -

https://fr.wikipedia.org/wiki/list_of_football_clubs_in_india#assam

La sortie JSON semble compliqué et je ne trouve pas un bon moyen d'extraire du texte de celui-ci.

(je fais cela dans JavaScript (nœud.js)

aide s'il vous plaît ..


1 commentaires

Je veux les champs de texte des tables (lignes et colonnes)


4 Réponses :


1
votes

Je ne suis pas sûr, qu'est-ce que vous attendez. Votre demande d'API à la page renvoie réellement le wikitext encapsulé dans une structure JSON. Cependant, le WikiteXt (où la table fait partie de) n'est pas JSON, vous ne pouvez donc pas vraiment l'interpréter comme tel.

Je ne suis pas vraiment sûr, quelles informations vous voulez avoir. Si vous voulez avoir les clubs de football dans la table, votre seul pari est d'analyser le WikiteXt (vous pouvez également renvoyer le HTML analysé réel de l'API pour le rendre "plus facile") et passer par les données vous-même. Cependant, c'est probablement une tâche susceptible d'erreur et non amusante.

Donc, si vous souhaitez obtenir tous les clubs de football de l'Inde dans un format de données structuré, je ferais probablement mieux essayer Wikidata pour cela. Il vous permet de resserrer des données structurées pour les informations dont vous avez besoin (et recevez également des liens vers des articles Wikipedia, si les objets ont un lien vers une page Wikipedia). Dans votre cas d'utilisation, il est probablement une bonne idée d'essayer le service de requête Wikidata . < p> là, vous pouvez émettre une requête comme: xxx

qui interroge une liste de tous les clubs de football en Inde et vous renvoie une liste avec l'étiquette de l'article ainsi que le lien vers L'article anglais Wikipedia: https://query.wikidata.org/ # Sélectionnez% 20% 3Fitemlabel% 20% 3FSITELINKINK KINKINK% 20% 20% 7b% 0A% 20% 20% 3Fitem% 20WDT% 3AP31% 20WD% 3AQ476028% 3A% 0A% 20% 20% 20% 20% 20% 20% 20% 20 % 20WDT% 3AP17% 20WD% 3AQ668.% 0A% 20% 20% 3fsitelink% 20schema% 3Aspartafe% 20% 3CHTTTTPS% 3A% 2F% 2fen.wikipedia.org% 2f% 3e% 3B% 3B 0A% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20schema% 3Aabout% 20% 3Fitem.% 0A% 20% 20Service% 20Wikibase% 3alabel% 20% 7b% 20bd% 20% 7B% 20WIKIBASE% 3ALanguage% 20% 22 % 5bauto_language% 5D% 2cen% 22.% 20% 7D% 0A% 7D


0 commentaires

0
votes

suppose que ceci est le res correspond aux données que vous obtenez de la wiki xxx

Le code ci-dessus peut vous donner un accès propre au texte; Cependant, comment vous allez séparer la colonne et la ligne est à vous de vous.


2 commentaires

Cela a aidé à supprimer des caractères inutiles, mais le problème principal est que texte ['*'] est un seul objet et ne peut pas être itéré pour chaque ligne dedans.


Tuture. Peut-être que nous pouvons tokeniser chaque mot?



0
votes

Cela ralentira un peu la performance (il semble que je ne suis pas sûr de ne pas être plus rapide). Cela peut être fait en définissant prop = texte , puis sur l'analyse de l'HTML obtenu à l'aide de JSDOM (livré avec / pour node.js)


0 commentaires

0
votes

Je sais que cette question est vieille mais il y a un API pour cela. Vous pouvez fournir un titre de page et il retournera les tables de votre choix dans JSON.


0 commentaires