Как я могу получить информацию из Википедии в мое приложение - PullRequest
2 голосов
/ 11 мая 2009

Привет, ребята. Я хочу получить информацию о записях, которые у меня есть в моей базе данных, из Википедии, например, некоторые стадионы и информацию о стране. Я использую Zend Framework, а также как бы я мог обрабатывать запросы, которые возвращают несколько неоднозначных записей или тому подобное ... Мне нужна вся помощь, которую я могу получить здесь ...

Ответы [ 3 ]

11 голосов
/ 11 мая 2009

Википедия основана на MediaWiki, предлагая прикладной программируемый интерфейс (API).

Вы можете проверить API MediaWiki в Википедии - http://en.wikipedia.org/w/api.php

Документация для MediaWiki API - http://www.mediawiki.org/wiki/API

2 голосов
/ 17 декабря 2013

Этот блог имеет действительно хороший код для получения определения из вики

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

?>
2 голосов
/ 11 мая 2009

Сделайте простой HTTP-запрос к статье, которую вы хотите импортировать. Вот хорошая библиотека , которая может помочь с анализом HTML, хотя для этого также существуют десятки решений, включая использование стандартной модели DOM, предоставляемой php .

<?php
require_once "HTTP/Request.php";

$req =& new HTTP_Request("http://www.yahoo.com/");
if (!PEAR::isError($req->sendRequest())) {
    echo $req->getResponseBody();
}
?> 

Обратите внимание, что вы будете заблокированы за пределами сайта, если ваш уровень трафика будет считаться слишком высоким. (Если вам нужно ОГРОМНОЕ количество статей, скачайте базу данных )

...