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

Vremenska prognoza sa drugog sajta

[es] :: PHP :: Vremenska prognoza sa drugog sajta

Strane: 1 2

[ Pregleda: 5775 | Odgovora: 23 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

davor4

Član broj: 30284
Poruke: 113
193.198.27.*



Profil

icon Vremenska prognoza sa drugog sajta12.03.2009. u 22:07 - pre 184 meseci
Preko curl funkcije u php-u pokupio sam sadržaj stranice sa vremenskom prognozom. Sada bih iz te stranice htio izvući samo određene podatke. Čitao sam da se može sa preg_replace funkcijom, međutim nisam naišao na primjer povezan s curl-om. Može li se sadržaj curl_exec spremiti u string, pa da s tim stringom manipuliram preko funkcije str_replace i sličnih.
Hvala
 
Odgovor na temu

Nemke_BG

Član broj: 163822
Poruke: 341
*.adsl.beotel.net.

Jabber: Nemke_BG@elitesecurity.org
Sajt: https://www.nmdesign.rs


+45 Profil

icon Re: Vremenska prognoza sa drugog sajta12.03.2009. u 22:17 - pre 184 meseci
cek mozda je zato sto mi se mnogo spava ali ja nisam ukapirao sta ti treba.....ako si vec uspeo da uzmes sadrzaj te stranice i znas da ces da je parsujes sa preg_replace-om....u cemu je onda problem?
...
 
Odgovor na temu

davor4

Član broj: 30284
Poruke: 113
161.53.120.*



Profil

icon Re: Vremenska prognoza sa drugog sajta13.03.2009. u 11:06 - pre 184 meseci
dakle pokupio sam cijelu stranicu, a ja želim iskoristiti samo prognozu za naredna dva dana, u °C. međutim nije mi jasno može li se to izvesti i kako sa preg_replace
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.dynamic.stcable.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: Vremenska prognoza sa drugog sajta13.03.2009. u 11:19 - pre 184 meseci
Moze. Kako? Tesko.

Edit: Iskopao sam nesto sto sam davno radio. Ovo je deo klase zaduzene bas za vadjenje podataka iz html file-a. Nisam radio samo to da izvadim taj deo pa ga objavim kod sebe, nego sam bas vadio sve podatke i radio snjima sta sam vec hteo - prevodio sa engleskog na srpski :D

Code:

private function getForecast(&$file_content)
    {
        $forecast = array();
        for($i=0;$i<$this->number_of_days_for_forecast;$i++){
            $j=$i+1;
            // For the last day it's a bit different regex
            $regex_1st_part = "'<div \s class=\"wXforecast-detailed-day-int\" \s id=\"wXforecast-day-".$i."\">(.*?)";
            ($i==6) ? $regex_2nd_part = "<div \s class=\"wXforecast-additional\">'ixs" : $regex_2nd_part = "<div \s class=\"wXforecast-detailed-day-int\" \s id=\"wXforecast-day-".$j."\">'ixs";
            $regex = $regex_1st_part . $regex_2nd_part;
            preg_match($regex,$file_content,$forecast[$i]);
        }
    
        foreach($forecast as $key => $val){
            $forecast[$key] = $forecast[$key][1];
        }
        
        $tmp_forecast = array();
        
        foreach($forecast as $key => $val){
            // Get the day
            preg_match("'<div \s class=\"wXfore-day\">(.*?)</div>'ixs",$val,$tmp_forecast['day'][$key]);
            // Get the date
            preg_match("'<div \s class=\"wXfore-date\">(.*?)</div>'ixs",$val,$tmp_forecast['date'][$key]);
            // Get the image
            preg_match("'<div \s class=\"wXfore-day-img\">(.*?)</div>'ixs",$val,$tmp_forecast['image'][$key]);
            // Get the high
            preg_match("'<div \s class=\"wXforecast-hi\">(.*?)</div>'ixs",$val,$tmp_forecast['high'][$key]);
            // Get the low
            preg_match("'<div \s class=\"wXforecast-lo\">(.*?)</div>'ixs",$val,$tmp_forecast['low'][$key]);
            // Get the whole text
            preg_match("'<div \s class=\"wXfore-day-desc\">(.*?)</div>'ixs",$val,$tmp_forecast['description'][$key]);
        }

        for($i=0;$i<count($tmp_forecast['day']);$i++){
            $this->forecast[$i]['day'] = $tmp_forecast['day'][$i][1];
            $this->forecast[$i]['date'] = $tmp_forecast['date'][$i][1];
            $this->forecast[$i]['image'] = $tmp_forecast['image'][$i][1];
            $this->forecast[$i]['high'] = $tmp_forecast['high'][$i][1];
            $this->forecast[$i]['low'] = $tmp_forecast['low'][$i][1];
            $this->forecast[$i]['description'] = $tmp_forecast['description'][$i][1];
        }
    }
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
..2.252.195.static.beotel.net.



+19 Profil

icon Re: Vremenska prognoza sa drugog sajta13.03.2009. u 12:11 - pre 184 meseci
Svaki sajt ima drugačiji HTML, znači rešenje ćeš morati sam sastaviti za konkretnu stranicu.
Ako ne znaš regularne izraze ili odvoj vremena da naučiš ili nemoj ni pokušavati već idi postupno sa standardnim string funkcijama (strpos, substr, explode) i u nekoliko koraka ćeš dobiti to što tražiš.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.dynamic.stcable.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: Vremenska prognoza sa drugog sajta13.03.2009. u 12:20 - pre 184 meseci
BTW, zar se ne moze to uraditi sa DOM funkcijama? http://www.php.net/manual/en/book.dom.php Nisam nikad radio snjima, al' mislim da moze, ne? :)
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-2.sezampro.yu.



+33 Profil

icon Re: Vremenska prognoza sa drugog sajta13.03.2009. u 13:27 - pre 184 meseci
A zašto komplikovati sa DOM-om... Ja sam baš skoro za jedan sajt pravio robota (spajdera, crawler-a, svejedno), koji odlazi na jednu stranicu, sa nje kupi samo određene podatke (naravno sa regularnim izrazima), i posle ih smešta u jedan lokalni tekstualni fajl na mom serveru, iz kojeg ja posle vučem potrebne informacije...

Procedura je otprilike ovakva:
- sa funkcijom file dohvatim sadžaj celog HTML fajla u niz (može i sa file_get_contents, pa da se onda sve smesti u jedan string, svejedno),
- sa preg_match_all strpam sve "pogotke" u jedan niz (preg_match_all('/>[a-z0-9:\.,\-\/\sčćšđžČĆŠĐŽ()]{2,}</is', $search, $niz);),
- taj niz po potrebi obradim i upišem sve iz njega u lokalni tekstualni fajl, naravno, u formi koja meni odgovara,
- i posle sa podacima iz tog fajla mogu lako da se "igram"...

U tvom slučaju, to sa vremenskom prognozom je još lakše, jer ti u stvari samo treba da radiš ova prva dva koraka i onda odma' da kod sebe na sajtu ispisuješ ono što dobiješ. Naravno, ovaj drugi korak, odnosno taj regularni izraz, zavisi od konkretnih potreba, i od toga koje informacije želiš da izdvojiš...
 
Odgovor na temu

Tudfa
Jovicevic Vladimir

Član broj: 152699
Poruke: 384
*.dynamic.sbb.rs.



+3 Profil

icon Re: Vremenska prognoza sa drugog sajta13.03.2009. u 20:59 - pre 184 meseci
Ako hoces nesto gotovo http://www.weather.com/ nudi razna gotova resenja sto se tice vremenske prognoze...

Ovaj link bi ti mogao biti najpre interesantan :

http://www.weather.com/services/?from=sitemap

pozZ
 
Odgovor na temu

holy_knight

Član broj: 150240
Poruke: 28
93.86.86.*



+2 Profil

icon Re: Vremenska prognoza sa drugog sajta14.03.2009. u 08:40 - pre 184 meseci
Nasao sam jednu skripticu :) i preradio je za svoje potrebe. Program prikazuje trenutnu temperaturu i ime fajla za sliku vremena za Novi Sad. U komentaru imas sva moguca vremena (ako zelis da pravis slike)

Code:

<?php
/*
       moguce vreme

        0      tornado
        1     tropical storm
        2     hurricane
        3     severe thunderstorms
        4     thunderstorms
        5     mixed rain and snow
        6     mixed rain and sleet
        7     mixed snow and sleet
        8     freezing drizzle
        9     drizzle
        10     freezing rain
        11     showers
        12     showers
        13     snow flurries
        14     light snow showers
        15     blowing snow
        16     snow
        17     hail
        18     sleet
        19     dust
        20     foggy
        21     haze
        22     smoky
        23     blustery
        24     windy
        25     cold
        26     cloudy
        27     mostly cloudy (night)
        28     mostly cloudy (day)
        29     partly cloudy (night)
        30     partly cloudy (day)
        31     clear (night)
        32     sunny
        33     fair (night)
        34     fair (day)
        35     mixed rain and hail
        36     hot
        37     isolated thunderstorms
        38     scattered thunderstorms
        39     scattered thunderstorms
        40     scattered showers
        41     heavy snow
        42     scattered snow showers
        43     heavy snow
        44     partly cloudy
        45     thundershowers
        46     snow showers
        47     isolated thundershowers
        3200     not available
    */



    $data = get_data("http://weather.yahooapis.com/forecastrss?p=YIXX0006&u=c");
    $vreme = format_result(get_match('/<yweather:condition  text="(.*)"/isU',$data));
    $temperatura = format_result(get_match('/temp="(.*)"/isU',$data));
    function format_result($input)
    {
        return strtolower(str_replace(array(' ', '(', ')'), array('-', '-', ''), $input));
    }
    function get_match($regex,$content)
    {
        preg_match($regex,$content,$matches);
        return $matches[1];
    }
    function get_data($url)
    {
        $ch = curl_init();
        $timeout = 5;
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
        $xml = curl_exec($ch);
        curl_close($ch);
        return $xml;
    }
?>


    <?php
        echo $vreme.'.jpg';
        echo '<br />temperatura: '.$temperatura;

    ?>
 
Odgovor na temu

davor4

Član broj: 30284
Poruke: 113
193.198.27.*



Profil

icon Re: Vremenska prognoza sa drugog sajta17.03.2009. u 11:19 - pre 184 meseci
Ovo sa yahoo-a radio ok, samo nema sve podatke koji mi trebaju.
File funkcija (pristupanje url-u) je disabled na mom serveru.
Napravio sam ovo:
Code:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.......meteo_stranica.html");
curl_setopt($ch, CURLOPT_HEADER, 0);

$cc = curl_exec($ch);

curl_close($ch);

Mogu li kako posremiti sadržaj te stranice kojoj se pristupa preko curl-a u neki string pa da pokušam sa string funkcijama doći do onoga što mi treba, jer regularni izrazi mi nisu jasni.
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.dynamic.stcable.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: Vremenska prognoza sa drugog sajta17.03.2009. u 11:39 - pre 184 meseci
Pa vec si pospremio, u $cc
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-1.sezampro.yu.



+33 Profil

icon Re: Vremenska prognoza sa drugog sajta17.03.2009. u 12:09 - pre 184 meseci
Citat:
davor4: Mogu li kako posremiti sadržaj te stranice kojoj se pristupa preko curl-a u neki string pa da pokušam sa string funkcijama doći do onoga što mi treba, jer regularni izrazi mi nisu jasni.

Možeš i bez curl-a da dohvatiš sadržaj stranice u string, ovako:
Code:

$sadrzaj = file_get_contents('http://www.......meteo_stranica.html');

Ako je samo to cilj, ili možda ti baš hoceš da koristiš curl...
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.dynamic.stcable.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: Vremenska prognoza sa drugog sajta17.03.2009. u 12:10 - pre 184 meseci
@Nikola Davor je rekao da je file funkcija iskljucena.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-1.sezampro.yu.



+33 Profil

icon Re: Vremenska prognoza sa drugog sajta17.03.2009. u 12:11 - pre 184 meseci
Izvinjavam se, nisam obratio pažnju... :S
 
Odgovor na temu

davor4

Član broj: 30284
Poruke: 113
193.198.27.*



Profil

icon Re: Vremenska prognoza sa drugog sajta17.03.2009. u 14:33 - pre 184 meseci
Da, file funkcija radi samo za fajlove na accountu.
Citat:


kazil: Pa vec si pospremio, u $cc


nisam baš siguran da je funkcija curl_exec spremila stranicu kao string u $cc, jer kad stavim echo $cc dobivam: "1"
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.dynamic.stcable.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: Vremenska prognoza sa drugog sajta17.03.2009. u 14:52 - pre 184 meseci
Ah, da. Treba postaviti CURLOPT_RETURNTRANSFER flag:
Code:

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, "http://www.......meteo_stranica.html");
curl_setopt($ch, CURLOPT_HEADER, 0);

$cc = curl_exec($ch);

curl_close($ch);
 
Odgovor na temu

davor4

Član broj: 30284
Poruke: 113
193.198.27.*



Profil

icon Re: Vremenska prognoza sa drugog sajta17.03.2009. u 16:46 - pre 183 meseci
ok, uspio sam pokupiti stranicu, i uz pomoć preg_match_all došao sam do dana i datuma. Kako bi došao do temperature i naziva gif-u iz ovih linija:
Code:

<TD><IMG SRC=7.gif></TD>
<TD><b>1&nbsp;&#176;C</b><br><font color="#208C12">34&nbsp;&#176;F</font></TD>

<TD><b>11&nbsp;&#176;C</b><br><font color="#208C12">52&nbsp;&#176;F</font></TD>
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Vremenska prognoza sa drugog sajta17.03.2009. u 17:03 - pre 183 meseci
Evo za početak probaj ovako nešto...

Pattern za naziv gif-a: /<td><img src\s?=\s?([a-Z0-9]+)\.gif><\/td>/i

Pattern za temperature: /<td><b>([.]+)</b><br><font color\s?=\s?\"#208C12\">([.]+)<\/font><\/td>/i

Naravno, to bi išlo sa preg_match_all, pa bi onda posle uzimao "pogotke" iz onog niza koji mu se prosleđuje kao treći argument. E sad ne znam dal' ti odjednom treba da dobiješ i gif i temperature ili...
 
Odgovor na temu

davor4

Član broj: 30284
Poruke: 113
193.198.27.*



Profil

icon Re: Vremenska prognoza sa drugog sajta17.03.2009. u 17:18 - pre 183 meseci
Nemoram dobiti odjedom gif i temperature, bitno da ih imam u array-u, ostalo mogu srediti kod ispisa
U ovoj liniji mi je javilo grešku pa sam dodao '\' :
/<td><b>([.]+)<\/b><br><font color\s?=\s?\"#208C12\">([.]+)<\/font><\/td>/i
dok mi ova linija
Code:
preg_match_all('/<td><img src\s?=\s?([a-Z0-9]+)\.gif><\/td>/i', $cc, $icon);
izbacuje grešku
Citat:

Compilation failed: range out of order in character class at offset 23

 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Vremenska prognoza sa drugog sajta17.03.2009. u 18:21 - pre 183 meseci
Nisam siguran, ali mislim da je ta greška zbog ovog a-Z, stavi onda umesto toga a-zA-Z. Pisao sam te pattern-e iz glave, nisam ih probao, nije ni čudo što se potkrala neka greška... :)
 
Odgovor na temu

[es] :: PHP :: Vremenska prognoza sa drugog sajta

Strane: 1 2

[ Pregleda: 5775 | Odgovora: 23 ] > FB > Twit

Postavi temu Odgovori

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