Existe-t-il un moyen d'accéder à la vignette de n'importe quelle page wikipedia en utilisant une API ? Je veux dire l'image en haut à droite dans la boîte. Existe-t-il des API pour cela ?
Réponses
Trop de publicités?http://en.wikipedia.org/w/api.php
Regardez prop=images
.
Il renvoie un tableau de noms de fichiers d'images qui sont utilisés dans la page analysée. Vous avez alors la possibilité d'effectuer un autre appel à l'API pour obtenir l'URL complète de l'image, par exemple : action=query&titles=Image:INSERT_EXAMPLE_FILE_NAME_HERE.jpg&prop=imageinfo&iiprop=url
ou à calculer l'URL via le hachage du nom de fichier .
Malheureusement, alors que le tableau d'images renvoyé par prop=images
est dans l'ordre où elles sont trouvées sur la page, le premier ne peut pas être garanti comme étant l'image dans la boîte d'information parce que parfois une page inclura une image avant la boîte d'information (la plupart du temps des icônes pour les métadonnées sur la page : par exemple "cet article est verrouillé").
La recherche dans le tableau d'images de la première image qui contient le titre de la page est probablement la meilleure solution pour l'image de l'infobox.
Consultez l'exemple de l'API MediaWiki pour obtenir l'image principale d'une page wikipédia : https://www.mediawiki.org/wiki/API:Page_info_in_search_results .
Comme d'autres l'ont mentionné, vous devez utiliser prop=pageimages
dans votre requête d'API.
Si vous voulez aussi la description de l'image, vous utiliserez prop=pageimages|pageterms
à la place dans votre requête d'API.
Vous pouvez obtenir l'image originale en utilisant piprop=original
. Ou vous pouvez obtenir une image miniature avec une largeur/hauteur spécifiée. Pour une vignette avec largeur/hauteur=600, piprop=thumbnail&pithumbsize=600
. Si vous omettez l'un ou l'autre, l'image renvoyée dans le rappel de l'API sera par défaut une vignette dont la largeur et la hauteur sont de 50px.
Si vous demandez des résultats au format JSON, vous devez toujours utiliser la méthode suivante formatversion=2
dans votre requête API (c'est-à-dire, format=json&formatversion=2
) car il facilite la récupération de l'image à partir de la requête.
Image de taille originale :
https://en.wikipedia.org/w/api.php?action=query&format=json&formatversion=2&prop=pageimages|pageterms&piprop=original&titles=Albert Einstein
Taille de la vignette (600px largeur/hauteur) Image :
https://en.wikipedia.org/w/api.php?action=query&format=json&formatversion=2&prop=pageimages|pageterms&piprop=thumbnail&pithumbsize=600&titles=Albert Einstein
Méthode 1 : Vous pouvez essayer une requête comme celle-ci :
http://en.wikipedia.org/w/api.php?action=opensearch&limit=5&format=xml&search=italy&namespace=0
dans la réponse, vous pouvez voir le Image
étiquette.
<Item>
<Text xml:space="preserve">Italy national rugby union team</Text>
<Description xml:space="preserve">
The Italy national rugby union team represent the nation of Italy in the sport of rugby union.
</Description>
<Url xml:space="preserve">
http://en.wikipedia.org/wiki/Italy_national_rugby_union_team
</Url>
<Image source="http://upload.wikimedia.org/wikipedia/en/thumb/4/46/Italy_rugby.png/43px-Italy_rugby.png" width="43" height="50"/>
</Item>
Méthode 2 : utiliser la requête http://en.wikipedia.org/w/index.php?action=render&title=italy
alors vous pouvez obtenir un code html brut, vous pouvez obtenir l'image en utilisant quelque chose comme PHP Simple HTML DOM Parser
http://simplehtmldom.sourceforge.net
Je n'ai pas le temps de vous l'écrire. Je vous donne juste quelques conseils, merci.
- Réponses précédentes
- Plus de réponses