Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

curl problem sa sajtom NBS

[es] :: PHP :: curl problem sa sajtom NBS

[ Pregleda: 4851 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

suboticanin
subotica

Član broj: 58054
Poruke: 13
77.46.188.*

Sajt: www.7templates.com


Profil

icon curl problem sa sajtom NBS03.03.2008. u 19:18 - pre 196 meseci
Zelim pomocu curl-a da preuzmem stranu:
http://www.nbs.yu/internet/lat...07&vrsta=1&eksport=xml
sa ovim kodom:
Code:
<?php

$datum = '01.01.2007';
$vrsta = '1';
$eksport = 'xml';
$bcURL = 'http://www.nbs.yu/internet/latinica/scripts/kl.html';

$data = "datum=".urlencode($datum)."&vrsta=".urlencode($vrsta)."&eksport=".urlencode($eksport);
$cUrl = curl_init();
curl_setopt($cUrl, CURLOPT_URL, $bcURL);
curl_setopt($cUrl, CURLOPT_HEADER, 'Content-type: application/x-www-form-urlencoded');
curl_setopt($cUrl, CURLOPT_GET, 1);
curl_setopt($cUrl, CURLOPT_GETFIELDS, $data);
curl_setopt($cUrl, CURLOPT_TIMEOUT, 30);
$response = curl_exec($cUrl);

if (curl_errno($cUrl)) {
    print curl_error($cUrl);
} else {
    print $response;
}
?>


ali stalno dobijam 404 stranu.
 
Odgovor na temu

Gojko Vujovic
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13651



+165 Profil

icon Re: curl problem sa sajtom NBS03.03.2008. u 20:12 - pre 196 meseci
Code:

<?php

ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0)');

$datum = '01.01.2007';
$vrsta = '1';
$eksport = 'xml';
$bcURL = 'http://www.nbs.yu/internet/latinica/scripts/kl.html';

$data = "datum=".urlencode($datum)."&vrsta=".urlencode($vrsta)."&eksport=".urlencode($eksport);

print file_get_contents("$bcURL?$data");

?>
 
Odgovor na temu

suboticanin
subotica

Član broj: 58054
Poruke: 13
79.101.236.*

Sajt: www.7templates.com


Profil

icon Re: curl problem sa sajtom NBS04.03.2008. u 06:39 - pre 196 meseci
hvala na odgovoru ali meni nažalost treba rešenje koriteći "curl", pošto to jedino funkcioniše na web serveru koji koristim.
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: curl problem sa sajtom NBS04.03.2008. u 18:37 - pre 196 meseci
Ne valja ti URL, koliko vidim kursna lista je anchor koji poziva JavaScript.
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

suboticanin
subotica

Član broj: 58054
Poruke: 13
79.101.206.*

Sajt: www.7templates.com


Profil

icon Re: curl problem sa sajtom NBS04.03.2008. u 19:11 - pre 196 meseci
klikni na ovaj link pa ces videti da je dobar link:

http://www.nbs.yu/internet/lat...07&vrsta=1&eksport=xml

nije problem u linku nego u mojoj PHP skripti.
 
Odgovor na temu

Gojko Vujovic
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13651



+165 Profil

icon Re: curl problem sa sajtom NBS04.03.2008. u 20:22 - pre 196 meseci
Hajde kad baš insistiraš na curl-u:

Code:

<?php

$datum = '01.01.2007';
$vrsta = '1';
$eksport = 'xml';
$bcURL = 'http://www.nbs.yu/internet/latinica/scripts/kl.html';

$data = "datum=".urlencode($datum)."&vrsta=".urlencode($vrsta)."&eksport=".urlencode($eksport);
$bcURL .= "?$data";
$cUrl = curl_init();
curl_setopt($cUrl, CURLOPT_URL, $bcURL);
curl_setopt($cUrl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0)');
curl_setopt($cUrl, CURLOPT_HEADER, 'Content-type: application/x-www-form-urlencoded');
curl_setopt($cUrl, CURLOPT_GET, 1);
curl_setopt($cUrl, CURLOPT_TIMEOUT, 30);
$response = curl_exec($cUrl);

if (curl_errno($cUrl)) {
    print curl_error($cUrl);
} else {
    print $response;
}
?>



Inače ovo nije dobar način za skidanje liste jer ti niko ne garantuje koliko će dugo raditi ta stranica, kao što su i prethodne lokacije gde su držali kursne liste prestajale sa radom.

Za ove potrebe su napravili web servis za kursne liste. Uputstvo za korišćenje je ovde: http://www.nbs.yu/export/inter...006_koriscenje_web_servisa.pdf

O tome je bilo na ES-u još krajem 2006.

 
Odgovor na temu

Nemanja Dubravac
Nemanja Dubravac
Sombor / Wien

Član broj: 4621
Poruke: 955
*.5.14.wu-wien.teleweb.at.

Sajt: https://www.shpock.com


+3 Profil

icon Re: curl problem sa sajtom NBS04.03.2008. u 20:26 - pre 196 meseci
probaj ovo:

Code:

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_COOKIEJAR, $root . "tmp/cookieFileName"); //cookie fajl
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6');
    curl_setopt($ch, CURLOPT_URL,"http://www.nbs.yu/internet/latinica/scripts/ondate.html");
    ob_start();      // prevent any output
    curl_exec ($ch); // execute the curl command
    ob_end_clean();  // stop preventing output

    curl_setopt($ch, CURLOPT_COOKIEFILE, $root . "tmp/cookieFileName"); //cookie fajl
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_URL, "http://www.nbs.yu/system/modul...kl/kllatinica/kursnaLista.html");
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6');
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, 'datum=' . date('d.m.Y') . '&vrsta=3&eksport=xml&godina=' . date('Y') . '&broj=br&lang=sr');
    ob_start();      // prevent any output
    $text = curl_exec ($ch); // execute the curl command
    ob_end_clean();  // stop preventing output
    curl_close ($ch);


rezultat treba da izadje u $text-u

iako sam kod stavio u code tag, es mi je ipak skratio jedan url u skripti, koji treba da izgleda ovako (bez razmaka)
http://www.nbs.yu/system/modules /yu.nbs.kl/kllatinica/kursnaLista.html
 
Odgovor na temu

bonc
Vladimir Bonč-Brujević
Penzioner
Niš - Crveni pevac

Član broj: 82231
Poruke: 75
*.dynamic.sbb.rs.

ICQ: 199047327


Profil

icon Re: curl problem sa sajtom NBS18.06.2008. u 16:37 - pre 192 meseci
Nisam na vreme video ovu temu, pa mi je drugar uradio, pošto sam ja laik za php.
Uz njegovu dozbolu stavljam ovde, možda još nekom zatreba:
Code:

<?php
/*
 * Kursna Lista 1.0.0
 *
 * Copyright (c) 2008 IvanG (stribor.co.yu)
 * Licensed under GPL (http://www.gnu.org/licenses/gpl.html) licenses.
 *
 */


/**
 * Get a web file (HTML, XHTML, XML, image, etc.) from a URL.  Return an
 * array containing the HTTP server response header fields and content.
 * Function taken from http://nadeausoftware.com/arti...ip_how_get_web_page_using_curl
 * and added POST request data by IvanG
 */
function get_web_page( $url, $post=NULL )
{
    $options = array(
        CURLOPT_RETURNTRANSFER => true,     // return web page
        CURLOPT_HEADER         => false,    // don't return headers
        // ako dobijete grešku, sledeću liniju označite kao komentar
        CURLOPT_FOLLOWLOCATION => true,     // follow redirects
        CURLOPT_ENCODING       => "",       // handle all encodings
        CURLOPT_USERAGENT      => "Pera",   // who am i
        CURLOPT_AUTOREFERER    => true,     // set referer on redirect
        CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
        CURLOPT_TIMEOUT        => 120,      // timeout on response
        CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
        CURLOPT_POST           => $post!=NULL, // if there is post pass it on
        CURLOPT_POSTFIELDS     => $post // post parameters
    );

    $ch      = curl_init( $url );
    curl_setopt_array( $ch, $options );
    $content = curl_exec( $ch );
    $err     = curl_errno( $ch );
    $errmsg  = curl_error( $ch );
    $header  = curl_getinfo( $ch );
    curl_close( $ch );

    $header['errno']   = $err;
    $header['errmsg']  = $errmsg;
    $header['content'] = $content;
    return $header;
}

// URL sa koga se uzimaju podaci
$url = "http://www.nbs.rs/internet/cirilica/scripts/kl.html";
//$url = "http://www.nbs.rs/internet/latinica/scripts/kl.html";

// POST podaci da bi se dobila kursna lista za današnji datum
$post_data = "datum=" . date("d.m.Y") . "&eksport=html&vrsta=3";

// Pokupi podatke sa nbs za današnji datum
$indata = get_web_page($url, $post_data);

if($indata['errno'] != 0)
    die($indata['errmsg']);

preg_match_all('/<td.*?>(\\d+?)<\/td><td.*?>(.*?)<\/td><td.*?>(.*?)<\/td><td.*?>(.*?)<\/td>.*?<td.*?>(.*?)<\/td>/s', $indata['content'], $data, PREG_SET_ORDER);

if(count($data) > 0) {
    echo "<table\n><tr><th>ŠIFRA VALUTE</th><th>NAZIV ZEMLjE</th><th>OZNAKA VALUTE</th><th>VAŽI ZA</th><th>DINARA</th></tr>\n";

    // ispis podataka
    for ($i = 0; $i < count($data); $i++) {
        echo "<tr>\n<td>";
        echo $data[$i][1]; // Sifra valute
        echo "</td><td>";
        echo $data[$i][2]; // Naziv zemlje
        echo "</td><td>";
        echo $data[$i][3]; // Oznaka valute
        echo "</td><td>";
        echo $data[$i][4]; // Vazi za
        echo "</td><td>";
        echo $data[$i][5]; // Dinara
        echo "</td><td>\n</tr>";
    }
    echo "</table>";
} else {
    echo "Podaci nisu nađeni.. ukoliko vidiš željene podatke u sledećem tekstu, znači da je promenjen format i potrebno je uskladiti regexp<br />\n";
    echo $indata['content'];
}
?>


Ja sam za sebe izvršio izmenu u kodu da mi prikazuje samo kurs evra, tako što sam izbacio echo linije u if(count($data), pa stavio
Code:
...
if(count($data) > 0) {
    echo "1 &euro; = ";
// ispis podataka
    echo $data[0][5];
echo "\n";

} else {
...




 
Odgovor na temu

bonc
Vladimir Bonč-Brujević
Penzioner
Niš - Crveni pevac

Član broj: 82231
Poruke: 75
*.dynamic.sbb.rs.

ICQ: 199047327


Profil

icon Re: curl problem sa sajtom NBS07.07.2008. u 14:50 - pre 192 meseci
Dopuna, v.1.1.0, za ispisivanje broja kursne lite i datuma izdavanja:

Ispod bloka
Code:
if(count($data) > 0) {
    echo "<table\n><tr><th>ŠIFRA VALUTE</th><th>NAZIV ZEMLjE</th><th>OZNAKA VALUTE</th><th>VAŽI ZA</th><th>DINARA</th></tr>\n";

ubaciti blok
Code:
// ovde se skuplja naslov - broj liste i datum formiranja
    if (preg_match('/KURSNA LISTA BR\\. (\\d*).*FORMIRANA NA DAN(.*?)GODINE/s', $indata['content'], $regs)) {
       echo "Broj:".$regs[1]."<br />\n";
       echo "Dan:".$regs[2]."<br />\n";
    } else {
       echo "nema podataka?!";
    }
 // nastavak - ispis podataka


 
Odgovor na temu

[es] :: PHP :: curl problem sa sajtom NBS

[ Pregleda: 4851 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.