Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: ooo - 21.11.07 - klo:09.32
-
Haluaisin laittaa yhdelle internetsivulleni tiedon tällä päivämäärällä tapahtuneista asioista. Sisällön saisi wikipediasta päivämallinesivuilta, jotka on muotoa:
http://fi.wikipedia.org/w/index.php?title=Malline:21._marraskuuta&printable=yes (http://fi.wikipedia.org/w/index.php?title=Malline:21._marraskuuta&printable=yes)
Ymmärtääkseni wikipedian sisällön lainaaminen on sallittua. Korjatkaa toki jos olen väärässä, niin unohdan koko asian! Täältä löytyy ohjeet siitä kuinka yksittäisten sivujen sisällön saisi ladattua xml-muodossa:
http://en.wikipedia.org/wiki/Wikipedia:Database_download#Why_not_just_retrieve_data_from_wikipedia.org_at_runtime.3F (http://en.wikipedia.org/wiki/Wikipedia:Database_download#Why_not_just_retrieve_data_from_wikipedia.org_at_runtime.3F)
Vaan kun koitan mitä vaan jippoa (php:lla tehty xml-parseri tai vain sivun lukeminen stringiksi ja sen tulostaminen), niin saan virheilmoituksen, ettei dokumenttiin ole pääsyä. Vaikka wikipediassa on ohjeet sivujen lataamiseksi, niin se on silti estetty? Enkö vain osaa, vai onkohan tällainen sisällönhakeminen nyttemmin estetty?
-
Ymmärtääkseni wikipedian sisällön lainaaminen on sallittua. Korjatkaa toki jos olen väärässä, niin unohdan koko asian!
Wikipedian materiaalin käyttäminen on sallittua, sehän tässä on Wikipedian - vapaan tietosanakirjan - idea. Kaikki Wikipedian materiaali (paitsi kuvat) on vapaasti käytettävissä GNU Free Documentation Licensen alaisuudessa, mikä lyhyesti tarkoittaa sitä, että voit käyttää materiaalia miten haluat mutta sinun on tällöin julkaistava tämä materiaali ja siihen tekemäsi muutokset samalla lisenssillä.
Katso Wikipedian artikkelit http://fi.wikipedia.org/wiki/Gfdl
-
Kyllä sen pitäisi onnistua, ainakin tämä (http://fi.wikipedia.org/wiki/Toiminnot:Vie_sivuja/Malline:21._marraskuuta) ulostaa XML:ää kuten tarkoituskin. Millä rivillä tarkalleen ottaen yrität avata tota? Meinaa webhostit tykkää käyttää PHP:n safe_modea -> "remote fopen" on pois päältä ja siitä saattaa tulla "käyttö kielletty"-tyylisiä viestejä. Mutta saat ladattua tavaraa muualta käyttämällä CUrlia (http://fi2.php.net/manual/en/ref.curl.php).
-
Kiitos ninnnu. Käytin aiemmin rumempaa tapaa, mutta koitin ehdottamaasi curlia. Käytin tällaista koodia:
<?php
$ch = curl_init("http://fi.wikipedia.org/wiki/Toiminnot:Vie_sivuja/Malline:21._marraskuuta");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
?>
Vaan ei toiminut. Sain seuraavan virheilmoitussivun:
If reporting this error to the Wikimedia System Administrators, please include the following details:
Request: GET http://fi.wikipedia.org/wiki/Toiminnot:Vie_sivuja/Malline:21._marraskuuta, from 64.xxx.xxx.xxx via sq16.wikimedia.org (squid/2.6.STABLE13) to ()
Error: ERR_ACCESS_DENIED, errno [No Error] at Wed, 21 Nov 2007 18:39:45 GMT
Googlettamalla löytyi sama ongelma täältä:
http://www.nabble.com/Problem-using-PHP-curl-to-access-Wikipedia-t3694950.html (http://www.nabble.com/Problem-using-PHP-curl-to-access-Wikipedia-t3694950.html)
Yllättävän hankalaksi menee. Esim. Ylen sivuilta curlilla hakeminen toimi kuin vettä vaan...
-
Wikipedia ei näköjään arvosta jos CUrl esiintyy itsenään. Tossa sun pasteemassa linkissä oli kyllä vastauskin:
function getURL($domain, $url)
{
$domain = "en.wikipedia.org"; // Force - debugging
$url = "/wiki/Cinco_De_Mayo";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $domain. $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_REFERER, "http://DaysUntil.com/");
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
// curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1;
en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6"
// curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01;
Windows NT 5.0)");
$result = curl_exec($ch);
curl_close ($ch);
return $result;
}
-
Toivoisinkin, että se olisi ollut vastaus. Käsittääkseni linkin koodi oli vain kirjoittajan yritelmä saada se toimimaan. Itsekin koitin tuota ja monia muita parametreja, mutta vielä ei tärpännyt...