2010-12-08 14 views
1

Je suis très nouveau sur l'API Wikipedia, mais je suis récemment tombé sur un site web chinois construit sur wikimedia et moi Je voudrais l'utiliser pour m'aider à analyser différentes pages dans un format utilisable pour un traitement éventuel avec XPATH. Après avoir lu un peu, j'ai trouvé que le paramètre action = parse était ce que je cherchais. Par exemple, les charges de requête suivantes sans difficulté: (de Wikipedia)MediaWiki API action = l'analyse échoue avec "Le paramètre de page ne peut pas être utilisé avec les paramètres de texte et de titre"

api.php?action=parse&page=Main_Page&format=xml 

Il présente le texte, suivi par des liens linguistiques, suivis par des liens. Je suis particulièrement intéressé par la section des liens, car j'utiliserais ces données pour explorer ce site basé sur wikipedia afin de créer une hiérarchie de pages.

Toute tentative de reproduire ces résultats, je virons la requête sur la fin de la page pour mon site:

http://www.youbianku.com/api.php?action=parse&page=%E5%8C%97%E4%BA%AC&format=xml 

% E5% 8C% 97% E4% BA% AC décide de les caractères chinois pour Pékin , btw. Quoi qu'il en soit, je reçois le résultat suivant:

<api> 
<error code="params" info="The page parameter cannot be used together with the text and title parameters"/> 
</api> 

Tout ce que je l'ai fait est de répliquer la requête de Wikipedia et de remplacer le nom de la page. Il n'est pas clair pour moi pourquoi cela a soudainement jeté une erreur. Il n'y a pas de problème en cours d'exécution d'autres requêtes de l'API sur cette page, comme le montre ci-dessous:

api.php?action=query&format=xml&titles=%E5%8C%97%E4%BA%AC&rvprop=content&prop=revisions 

J'ai lu récemment que cela peut être dû à des règles de réécriture htaccess ajoutant un titre par défaut. Y at-il un moyen de contourner ces derniers, étant donné que je suis un client de ce site?

Répondre

3

Comme vous le suggérez, ce problème est probablement dû à une règle de réécriture d'URL erronée.

Vous pouvez contourner ce problème en utilisant le paramètre text et transcluding la page que vous voulez, comme ceci:

/api.php?action=parse&text={{:Page_title}} 

(Le leader : est là pour empêcher Template: être préfixé au titre de la page par défaut.)

Trying this with the example page in your question renvoie une erreur PHP pour certains — probablement sans rapport avec raison —, mais it works fine with other pages on that wiki.

Un inconvénient de cette astuce est qu'elle contourne le cache de l'analyseur, le rendant plus lent et plus consommateur de ressources que simplement en utilisant page. En outre, tous les variables utilisés sur la page qui dépendent du titre de la page sont susceptibles de donner des résultats inattendus, et toute variable en fonction de la page ou des métadonnées de révision échouera probablement entièrement. Heureusement, ces variables ne sont pas très souvent utilisées dans la pratique.


Un autre, peut-être même meilleure solution peut être d'utiliser simplement

/index.php?action=render&title=Page_title 

qui renverra la source HTML de la page analysable sans peau environnante, like this. Cette méthode n'est pas aussi polyvalente que l'API, mais elle ne souffre d'aucun des problèmes décrits ci-dessus.