Salut les gars je souhaite obtenir des informations pour les entrées que j'ai dans ma base de données de wikipedia comme par exemple certains stades et informations sur le pays. J'utilise Zend Framework et aussi comment serais-je capable de gérer les requêtes qui renvoient plusieurs entrées ambiguës ou similaires .. Je voudrais toute l'aide que je peux obtenir ici ...Comment puis-je obtenir des informations de wikipedia dans mon application
Répondre
Faire un simple HTTP request à l'article vous cherchez à importer. Here's a good library ce qui pourrait aider à l'analyse du code HTML, bien qu'il existe des dizaines de solutions pour cela aussi, .
<?php
require_once "HTTP/Request.php";
$req =& new HTTP_Request("http://www.yahoo.com/");
if (!PEAR::isError($req->sendRequest())) {
echo $req->getResponseBody();
}
?>
Notez que vous serez exclu du site si vos niveaux de trafic sont jugés trop élevés. (Si vous voulez un grand nombre d'articles, download the database)
Wikipédia est basé sur MediaWiki, offrant une interface programmable (API).
Vous pouvez consulter API MediaWiki sur Wikipedia - http://en.wikipedia.org/w/api.php
Documentation API MediaWiki - http://www.mediawiki.org/wiki/API
Thats cool, mais y at-il un tuto rials ou le code de démarrage pour commencer. Fondamentalement, je n'ai pas le nom exact de l'article juste une entrée dans ma base de données et je me demandais si je pouvais obtenir un article correspondant de la wikipedia. – Ali
This blog a un code vraiment bon pour obtenir une définition du wiki
<?php
//FUNCTION THAT :PARAMETER - KEYWORD , AND RETURNS WIKI DEFINITION (IN ARRAY FORMAT)
function wikidefinition($s) {
//ENGLISH WIKI
$url = "http://en.wikipedia.org/w/api.php?action=opensearch&search=".urlencode($s)."&format=xml&limit=1";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPGET, TRUE);
curl_setopt($ch, CURLOPT_POST, FALSE);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_NOBODY, FALSE);
curl_setopt($ch, CURLOPT_VERBOSE, FALSE);
curl_setopt($ch, CURLOPT_REFERER, "");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_MAXREDIRS, 4);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; he; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8");
$page = curl_exec($ch);
$xml = simplexml_load_string($page);
if((string)$xml->Section->Item->Description) {
return array((string)$xml->Section->Item->Text,
(string)$xml->Section->Item->Description,
(string)$xml->Section->Item->Url);
} else {
return "";
}
}
//END OF FUNCTION WIKIDEFINITIONS
//USE OF FUNCTION
$data = wikidefinition('Bangladesh') ;
//var_dump(wikidefinition('bangladesh')) ; //displays the array content
echo "Word:" . $data[0] . "<br/>";
echo "Definition:" . $data[1] . "<br/>";
echo "Link:" . $data[2] . "<br/>";
?>
Cela semble intéressant - merci pour le pourboire! – Ali
Whoa Je n Je ne sais pas que vous pourriez faire cela - J'ai téléchargé la base de données et a commencé un nouveau fil sur la tâche méticuleuse de l'importer - merci pour l'homme de pointe :) – Ali