2009-05-11 8 views
2

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

2

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)

+0

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

11

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

+0

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

2

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/>"; 

?> 
+0

Cela semble intéressant - merci pour le pourboire! – Ali