Pereiti prie turinio

Lapinskis

Patvirtinti nariai
  • Pranešimai

    665
  • Užsiregistravo

  • Lankėsi

  • Laimėta dienų

    2
  • Atsiliepimai

    100%

Reputacijos išklotinė

  1. Patinka
    Lapinskis sureagavo į theScientistAdam Įvertinkit Adomo muzikinius gabumus   
    Įrašiau ką tik dainukę, patalpinau, ir dabar laukiu nuomonės ir hit'ų.
     
    Rašykit bet kokius (konstruktyvius) komentarus čia arba ten. Ačiū. :)
     
    http://www.youtube.com/watch?v=I11jvSzfMqo
  2. Patinka
    Lapinskis gavo reakciją nuo theScientistAdam Kontaktų forma - kaip apsisaugoti nuo spam'o?   
    Kartais užplūsta gerumo banga ir norisi pasidalinti bent mažyte kruopelyte savo sukaupto žinių bagažo ^_^
  3. Patinka
    Lapinskis gavo reakciją nuo zadras Web scrapping naudojant PHP   
    Sveiki uždarbiečiai, jau vienur prisižadėjau, kad parašysiu šiek tiek apie web scrapping. Tai pirmas mano straipsnis šiame forume, todėl nemaišykit su žemėmis be pagrindo. Konstruktyvi kritika visada laukiama, o šiaip ir pasiginčyti galiu, jeigu atsiras žmonių, manančių, kad mano pateikti programinio kodo pavyzdžiai yra neteisingi ar, kad galima padaryti kažką geriau. Pats esu gana dar jaunas ir daug ko nemoku, tačiau trokštu išmokti. Iš savo, ir kitų mano artimųjų patirties galiu pasakyti, kad srities specialistu tampi mokydamas kitus.
     
    Pradedant, norėčiau apžvelgti kam web scrapping gali būti panaudojamas. Šį metodą programuotojai naudoja tada, kuomet reikia gauti informacijos iš kitos svetainės ir nenorima dirbti "copy->paste" principu. Web scrapping tai padarys už jus. Kadangi daugiausia teko programuoti PHP programavimo kalba, tai tik ja galėsiu pateikti pavyzdžių.
     
    Vogti/skolintis/pasiimti informaciją PHP pagalba iš kitų interneto svetainių galima keletu būdų. Tačiau aprašysiu tik du - vieną, kuris nepatogus ir jį naudojant gali prasidėti rimtas "galvos skausmas", ir antrą - kurį pats naudoju ir rekomenduoju naudoti kitiems.
     
    Pirmasis būdas. Jame naudojama curl biblioteka, preg_match_all funkcija. Blogiausia šio metodo savybė - reikia rašyti regexp išraiškas. Man (spėju ir kitiems programuotojams) tai yra "pain in the ######". Šis metodas turi ir pliusų - juo parašyti script'ai veikia šiek tiek greičiau negu antruoju.
     
    Daug netuščiažodžiaujant, štai kodo pavyzdys (ačiū Sauliui):
     

    <?php function rasti_turini( $pradzia, $galas, $url ) { $pradzia = str_replace('/', '\/', $pradzia); $galas = str_replace('/', '\/', $galas); $regexp = '/' . $pradzia . '(.+?)' . $galas . '/'; preg_match_all($regexp, $url, $atitike); return $atitike[0]; } function curl( $url ) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); return $result; } //magic (: $url = curl( 'http://www.orai.lt/lt/prognozes/vilnius' ); $orai = rasti_turini( '<td class="oraiTableRow">', '</td>', $url ); //atvaizduojame antrąjį masyvo elementą echo $orai[1]; //jeigu norite pažiūrėti, kaip atrodo gautas masyvas, atkomentuokite sekančias 3 eilutes //echo '<pre>'; //print_r( $orai ); //echo '</pre>'; ?>
     
     
    Antrasis būdas. Tai mano mėgstamiausias, ir mano nuomone geriausias būdas gauti informaciją iš kito tinklalapio. Kaip taip padaryti? Ogi pasitelkti simple html DOM biblioteką. :) Jos pagalba galima rašyti elementų select'orius jQuery stiliumi.
     
    Pvz.:

    $html->find('table.bioTableAlt tbody tr');
     
    Argi gali būti patogiau ir greičiau? :rolleyes:
     
    Tarkim turime užduotį, mums reikia gauti visą geriausių teniso žaidėjų sąrašą iš šitos svetainės. Taip, visą 1000 :) Atkreipkite dėmesį, kad lentelė atnaujinama kiekvieną pirmadienį. Kad šis kodas veiktų, jums prireiks parsisiųsti simple html dom klasę.
     
    Kodas:

    <?php //nuimame laiko limita set_time_limit(0); //simple html dom include('simple_html_dom.php'); //------------------------------------------------------------------------------ // Nuorodos //------------------------------------------------------------------------------ //paskutinio pirmadienio data $date = date('d.m.Y', strtotime('last monday')); //užkomentuokit dali nuorodu, jeigu norit greiciau pamatyti rezultata $urls = array(); $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=1'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=101'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=201'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=301'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=401'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=501'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=601'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=701'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=801'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=901'; //inicijuojam masyvą $zaidejai $zaidejai = array(); //praskanuojam visas nuorodas foreach($urls as $url) { //gauname duomenis iš svetainės $html = file_get_html($url); foreach( $html->find('table.bioTableAlt tbody tr') as $a ) { // Duomenys apie žaidėją: // pozicija --- vardas, šalis --- žaidėjo taškai --- pozicijos pokytis --- turnyrų skaičius $zaidejas['pozicija'] = $a->children(0)->plaintext; $zaidejas['vardas'] = $a->children(1)->plaintext; $zaidejas['taskai'] = $a->children(2)->plaintext; $zaidejas['ppokytis'] = $a->children(3)->plaintext; $zaidejas['tskaicius'] = $a->children(4)->plaintext; $zaidejai[] = $zaidejas; } } //pašalinam nereikalingus masyvo elementus (lentelės heading'us) unset( $zaidejai[909] ); unset( $zaidejai[808] ); unset( $zaidejai[707] ); unset( $zaidejai[606] ); unset( $zaidejai[505] ); unset( $zaidejai[404] ); unset( $zaidejai[303] ); unset( $zaidejai[202] ); unset( $zaidejai[101] ); unset( $zaidejai[ 0 ] ); //sutvarkom array keys $zaidejai = array_values( $zaidejai ); //pažiūrim gautą masyvą echo '<pre>'; print_r( $zaidejai ); echo '</pre>'; ?>
     
    Štai dar vienas pavyzdys, kuriame gauname filmo reitingą iš imdb.com:

    <?php //simple html dom biblioteka include('simple_html_dom.php'); //filmo url $url = 'http://www.imdb.com/title/tt0485947/'; //gauname svetainės html $html = file_get_html($url); //gauname filmo reitingą $ratio = $html->find('span.rating-rating', 0)->plaintext; echo $ratio; ?>
     
     
    Pabaigai, noriu paminėti, kad su web scrapping galima sukurti gausybę naudingų ir niekam nekenkiančių dalykėlių, tačiau su juo galima pilnai pavogti turinį is RSS srauto ar iš paprasčiausios svetainės. Bet kaip tai padaryti - susigalvokite patys.
     
    Ir tikiuosi, jog jums patiko, bei buvo naudingas pirmasis mano straipsnis uždarbis.lt forume :)
  4. Patinka
    Lapinskis gavo reakciją nuo minijus Online nariai   
    Aš seniai seniai viename wap'o script'e esu matęs tai tokio tipo sprendimą :lol: :
     

    <?php echo 'Narių online ' . rand(5,10); ?>
     
    o šiaip, nebandei ieškoti stackoverflow.com? ten dažnai būna diskusijų, kuriose surandi atsakymus į panašaus tipo klausimus. :)
  5. Patinka
    Lapinskis gavo reakciją nuo EdFoX Kontaktų forma - kaip apsisaugoti nuo spam'o?   
    Sveiki,
     
    Pamaniau, parašysiu trumpą straipsniuką į uždarbis.lt. Šį kartą - kaip apsaugoti kontaktų formas nuo spamo robotų nenaudojant captcha (aš jų tiesiog nemėgstu). Iš karto perspėju, kad šis būdas tiks tik toms svetainėms, kurios nėra masinio lankomumo.
     
    Mano būdas yra gudrus, tačiau ne tiek, kad apgautų script'ą, kuris būtų specialiai parašytas konkrečiai svetainei. Visa jo esmė - kur nors formoje yra įterpiamas laukelis, tarkim "surname" (<input type="text" name="surname" class="awesome-input" />), tada pasinaudojant css klase ".awesome-input" nustatome "display:none;".
     
    Server-side dalyje tikrini ar atsiųstoje formoje yra užpildytas laukelis "surname" - jeigu yra, vadinasi formą užpildėti spamo robotas ir tada laiško neišsiunti... :) Juk gi žmogus nemato to laukelio, todėl negali jo ir užpildyti... :rolleyes:
     
    Pavyzdinis kodas:
     
    CSS:

    .awesome-input{ display: none; }
     
    HTML:

    <form method="post" action="/contact/"> <label>Vardas</label> <input id="vardas" class="field" type="text" value="" name="vardas"> <label>El. paštas</label> <input id="email" class="field" type="text" value="" name="email"> <label>Žinutė</label> <textarea id="message" name="message"></textarea> <input type="text" name="surname" class="awesome-input" /> <input class="btn" type="submit" value="Siųsti" name="submit"> </form>
     
    Štai tokiu būdu aš išvengiu captcha naudojimo, tikiuosi visa tai kam nors pravers ;)
  6. Patinka
    Lapinskis gavo reakciją nuo EdFoX Kontaktų forma - kaip apsisaugoti nuo spam'o?   
    Sveiki,
     
    Pamaniau, parašysiu trumpą straipsniuką į uždarbis.lt. Šį kartą - kaip apsaugoti kontaktų formas nuo spamo robotų nenaudojant captcha (aš jų tiesiog nemėgstu). Iš karto perspėju, kad šis būdas tiks tik toms svetainėms, kurios nėra masinio lankomumo.
     
    Mano būdas yra gudrus, tačiau ne tiek, kad apgautų script'ą, kuris būtų specialiai parašytas konkrečiai svetainei. Visa jo esmė - kur nors formoje yra įterpiamas laukelis, tarkim "surname" (<input type="text" name="surname" class="awesome-input" />), tada pasinaudojant css klase ".awesome-input" nustatome "display:none;".
     
    Server-side dalyje tikrini ar atsiųstoje formoje yra užpildytas laukelis "surname" - jeigu yra, vadinasi formą užpildėti spamo robotas ir tada laiško neišsiunti... :) Juk gi žmogus nemato to laukelio, todėl negali jo ir užpildyti... :rolleyes:
     
    Pavyzdinis kodas:
     
    CSS:

    .awesome-input{ display: none; }
     
    HTML:

    <form method="post" action="/contact/"> <label>Vardas</label> <input id="vardas" class="field" type="text" value="" name="vardas"> <label>El. paštas</label> <input id="email" class="field" type="text" value="" name="email"> <label>Žinutė</label> <textarea id="message" name="message"></textarea> <input type="text" name="surname" class="awesome-input" /> <input class="btn" type="submit" value="Siųsti" name="submit"> </form>
     
    Štai tokiu būdu aš išvengiu captcha naudojimo, tikiuosi visa tai kam nors pravers ;)
  7. Patinka
    Lapinskis gavo reakciją nuo minijus Online nariai   
    Aš seniai seniai viename wap'o script'e esu matęs tai tokio tipo sprendimą :lol: :
     

    <?php echo 'Narių online ' . rand(5,10); ?>
     
    o šiaip, nebandei ieškoti stackoverflow.com? ten dažnai būna diskusijų, kuriose surandi atsakymus į panašaus tipo klausimus. :)
  8. Patinka
    Lapinskis sureagavo į EdFoX Online nariai   
    Iš skaitytų Lapinskio postų akivaizdu, kad jis nėra žalias programeris. Ir tai, kad tu pamanei, jog ten jisai parašė rimtai, rodo tavo neprotingumą.....))))))
  9. Patinka
    Lapinskis sureagavo į wicked Mano 2-asis sukoduotas dizainas.   
    jei bent kažkiek suvokimo turėtum, žinotum, kad safari naudoją tą patį varikliuką kaip ir chrome - webkit :)
  10. Patinka
    Lapinskis gavo reakciją nuo minijus Online nariai   
    Aš seniai seniai viename wap'o script'e esu matęs tai tokio tipo sprendimą :lol: :
     

    <?php echo 'Narių online ' . rand(5,10); ?>
     
    o šiaip, nebandei ieškoti stackoverflow.com? ten dažnai būna diskusijų, kuriose surandi atsakymus į panašaus tipo klausimus. :)
  11. Patinka
    Lapinskis gavo reakciją nuo iola Wordpress pluginai   
    Nereikia čia jokių plugin'ų... čia pasiredaguok kodą http://developers.facebook.com/docs/reference/plugins/like-box/ ir bus kaip nori.
     
     
     
    Kažkada teko pačiam parašyti tokį plugin'ą, jeigu mokėsi ir sugebėsi pasiredaguoti tai parašyk pm'ą, gal atrasiu kur failus. :)
     
    Čia ne plugin'as... Tau reikia atitinkamos wordpress temos. Galbūt unikalios.
     
     
    Gali naudoti wp-robot, bet ne visada jis būna tinkamas naudoti. Šiaip dar galima unikalų script'ą parašyti. :)
  12. Patinka
    Lapinskis gavo reakciją nuo Vaidas* Dainų rekomendacijos   
    http://www.youtube.com/watch?v=RNuUgbUzM8U

  13. Patinka
    Lapinskis gavo reakciją nuo zadras Web scrapping naudojant PHP   
    Sveiki uždarbiečiai, jau vienur prisižadėjau, kad parašysiu šiek tiek apie web scrapping. Tai pirmas mano straipsnis šiame forume, todėl nemaišykit su žemėmis be pagrindo. Konstruktyvi kritika visada laukiama, o šiaip ir pasiginčyti galiu, jeigu atsiras žmonių, manančių, kad mano pateikti programinio kodo pavyzdžiai yra neteisingi ar, kad galima padaryti kažką geriau. Pats esu gana dar jaunas ir daug ko nemoku, tačiau trokštu išmokti. Iš savo, ir kitų mano artimųjų patirties galiu pasakyti, kad srities specialistu tampi mokydamas kitus.
     
    Pradedant, norėčiau apžvelgti kam web scrapping gali būti panaudojamas. Šį metodą programuotojai naudoja tada, kuomet reikia gauti informacijos iš kitos svetainės ir nenorima dirbti "copy->paste" principu. Web scrapping tai padarys už jus. Kadangi daugiausia teko programuoti PHP programavimo kalba, tai tik ja galėsiu pateikti pavyzdžių.
     
    Vogti/skolintis/pasiimti informaciją PHP pagalba iš kitų interneto svetainių galima keletu būdų. Tačiau aprašysiu tik du - vieną, kuris nepatogus ir jį naudojant gali prasidėti rimtas "galvos skausmas", ir antrą - kurį pats naudoju ir rekomenduoju naudoti kitiems.
     
    Pirmasis būdas. Jame naudojama curl biblioteka, preg_match_all funkcija. Blogiausia šio metodo savybė - reikia rašyti regexp išraiškas. Man (spėju ir kitiems programuotojams) tai yra "pain in the ######". Šis metodas turi ir pliusų - juo parašyti script'ai veikia šiek tiek greičiau negu antruoju.
     
    Daug netuščiažodžiaujant, štai kodo pavyzdys (ačiū Sauliui):
     

    <?php function rasti_turini( $pradzia, $galas, $url ) { $pradzia = str_replace('/', '\/', $pradzia); $galas = str_replace('/', '\/', $galas); $regexp = '/' . $pradzia . '(.+?)' . $galas . '/'; preg_match_all($regexp, $url, $atitike); return $atitike[0]; } function curl( $url ) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); return $result; } //magic (: $url = curl( 'http://www.orai.lt/lt/prognozes/vilnius' ); $orai = rasti_turini( '<td class="oraiTableRow">', '</td>', $url ); //atvaizduojame antrąjį masyvo elementą echo $orai[1]; //jeigu norite pažiūrėti, kaip atrodo gautas masyvas, atkomentuokite sekančias 3 eilutes //echo '<pre>'; //print_r( $orai ); //echo '</pre>'; ?>
     
     
    Antrasis būdas. Tai mano mėgstamiausias, ir mano nuomone geriausias būdas gauti informaciją iš kito tinklalapio. Kaip taip padaryti? Ogi pasitelkti simple html DOM biblioteką. :) Jos pagalba galima rašyti elementų select'orius jQuery stiliumi.
     
    Pvz.:

    $html->find('table.bioTableAlt tbody tr');
     
    Argi gali būti patogiau ir greičiau? :rolleyes:
     
    Tarkim turime užduotį, mums reikia gauti visą geriausių teniso žaidėjų sąrašą iš šitos svetainės. Taip, visą 1000 :) Atkreipkite dėmesį, kad lentelė atnaujinama kiekvieną pirmadienį. Kad šis kodas veiktų, jums prireiks parsisiųsti simple html dom klasę.
     
    Kodas:

    <?php //nuimame laiko limita set_time_limit(0); //simple html dom include('simple_html_dom.php'); //------------------------------------------------------------------------------ // Nuorodos //------------------------------------------------------------------------------ //paskutinio pirmadienio data $date = date('d.m.Y', strtotime('last monday')); //užkomentuokit dali nuorodu, jeigu norit greiciau pamatyti rezultata $urls = array(); $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=1'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=101'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=201'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=301'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=401'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=501'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=601'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=701'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=801'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=901'; //inicijuojam masyvą $zaidejai $zaidejai = array(); //praskanuojam visas nuorodas foreach($urls as $url) { //gauname duomenis iš svetainės $html = file_get_html($url); foreach( $html->find('table.bioTableAlt tbody tr') as $a ) { // Duomenys apie žaidėją: // pozicija --- vardas, šalis --- žaidėjo taškai --- pozicijos pokytis --- turnyrų skaičius $zaidejas['pozicija'] = $a->children(0)->plaintext; $zaidejas['vardas'] = $a->children(1)->plaintext; $zaidejas['taskai'] = $a->children(2)->plaintext; $zaidejas['ppokytis'] = $a->children(3)->plaintext; $zaidejas['tskaicius'] = $a->children(4)->plaintext; $zaidejai[] = $zaidejas; } } //pašalinam nereikalingus masyvo elementus (lentelės heading'us) unset( $zaidejai[909] ); unset( $zaidejai[808] ); unset( $zaidejai[707] ); unset( $zaidejai[606] ); unset( $zaidejai[505] ); unset( $zaidejai[404] ); unset( $zaidejai[303] ); unset( $zaidejai[202] ); unset( $zaidejai[101] ); unset( $zaidejai[ 0 ] ); //sutvarkom array keys $zaidejai = array_values( $zaidejai ); //pažiūrim gautą masyvą echo '<pre>'; print_r( $zaidejai ); echo '</pre>'; ?>
     
    Štai dar vienas pavyzdys, kuriame gauname filmo reitingą iš imdb.com:

    <?php //simple html dom biblioteka include('simple_html_dom.php'); //filmo url $url = 'http://www.imdb.com/title/tt0485947/'; //gauname svetainės html $html = file_get_html($url); //gauname filmo reitingą $ratio = $html->find('span.rating-rating', 0)->plaintext; echo $ratio; ?>
     
     
    Pabaigai, noriu paminėti, kad su web scrapping galima sukurti gausybę naudingų ir niekam nekenkiančių dalykėlių, tačiau su juo galima pilnai pavogti turinį is RSS srauto ar iš paprasčiausios svetainės. Bet kaip tai padaryti - susigalvokite patys.
     
    Ir tikiuosi, jog jums patiko, bei buvo naudingas pirmasis mano straipsnis uždarbis.lt forume :)
  14. Patinka
    Lapinskis gavo reakciją nuo zadras Web scrapping naudojant PHP   
    Sveiki uždarbiečiai, jau vienur prisižadėjau, kad parašysiu šiek tiek apie web scrapping. Tai pirmas mano straipsnis šiame forume, todėl nemaišykit su žemėmis be pagrindo. Konstruktyvi kritika visada laukiama, o šiaip ir pasiginčyti galiu, jeigu atsiras žmonių, manančių, kad mano pateikti programinio kodo pavyzdžiai yra neteisingi ar, kad galima padaryti kažką geriau. Pats esu gana dar jaunas ir daug ko nemoku, tačiau trokštu išmokti. Iš savo, ir kitų mano artimųjų patirties galiu pasakyti, kad srities specialistu tampi mokydamas kitus.
     
    Pradedant, norėčiau apžvelgti kam web scrapping gali būti panaudojamas. Šį metodą programuotojai naudoja tada, kuomet reikia gauti informacijos iš kitos svetainės ir nenorima dirbti "copy->paste" principu. Web scrapping tai padarys už jus. Kadangi daugiausia teko programuoti PHP programavimo kalba, tai tik ja galėsiu pateikti pavyzdžių.
     
    Vogti/skolintis/pasiimti informaciją PHP pagalba iš kitų interneto svetainių galima keletu būdų. Tačiau aprašysiu tik du - vieną, kuris nepatogus ir jį naudojant gali prasidėti rimtas "galvos skausmas", ir antrą - kurį pats naudoju ir rekomenduoju naudoti kitiems.
     
    Pirmasis būdas. Jame naudojama curl biblioteka, preg_match_all funkcija. Blogiausia šio metodo savybė - reikia rašyti regexp išraiškas. Man (spėju ir kitiems programuotojams) tai yra "pain in the ######". Šis metodas turi ir pliusų - juo parašyti script'ai veikia šiek tiek greičiau negu antruoju.
     
    Daug netuščiažodžiaujant, štai kodo pavyzdys (ačiū Sauliui):
     

    <?php function rasti_turini( $pradzia, $galas, $url ) { $pradzia = str_replace('/', '\/', $pradzia); $galas = str_replace('/', '\/', $galas); $regexp = '/' . $pradzia . '(.+?)' . $galas . '/'; preg_match_all($regexp, $url, $atitike); return $atitike[0]; } function curl( $url ) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); return $result; } //magic (: $url = curl( 'http://www.orai.lt/lt/prognozes/vilnius' ); $orai = rasti_turini( '<td class="oraiTableRow">', '</td>', $url ); //atvaizduojame antrąjį masyvo elementą echo $orai[1]; //jeigu norite pažiūrėti, kaip atrodo gautas masyvas, atkomentuokite sekančias 3 eilutes //echo '<pre>'; //print_r( $orai ); //echo '</pre>'; ?>
     
     
    Antrasis būdas. Tai mano mėgstamiausias, ir mano nuomone geriausias būdas gauti informaciją iš kito tinklalapio. Kaip taip padaryti? Ogi pasitelkti simple html DOM biblioteką. :) Jos pagalba galima rašyti elementų select'orius jQuery stiliumi.
     
    Pvz.:

    $html->find('table.bioTableAlt tbody tr');
     
    Argi gali būti patogiau ir greičiau? :rolleyes:
     
    Tarkim turime užduotį, mums reikia gauti visą geriausių teniso žaidėjų sąrašą iš šitos svetainės. Taip, visą 1000 :) Atkreipkite dėmesį, kad lentelė atnaujinama kiekvieną pirmadienį. Kad šis kodas veiktų, jums prireiks parsisiųsti simple html dom klasę.
     
    Kodas:

    <?php //nuimame laiko limita set_time_limit(0); //simple html dom include('simple_html_dom.php'); //------------------------------------------------------------------------------ // Nuorodos //------------------------------------------------------------------------------ //paskutinio pirmadienio data $date = date('d.m.Y', strtotime('last monday')); //užkomentuokit dali nuorodu, jeigu norit greiciau pamatyti rezultata $urls = array(); $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=1'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=101'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=201'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=301'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=401'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=501'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=601'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=701'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=801'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=901'; //inicijuojam masyvą $zaidejai $zaidejai = array(); //praskanuojam visas nuorodas foreach($urls as $url) { //gauname duomenis iš svetainės $html = file_get_html($url); foreach( $html->find('table.bioTableAlt tbody tr') as $a ) { // Duomenys apie žaidėją: // pozicija --- vardas, šalis --- žaidėjo taškai --- pozicijos pokytis --- turnyrų skaičius $zaidejas['pozicija'] = $a->children(0)->plaintext; $zaidejas['vardas'] = $a->children(1)->plaintext; $zaidejas['taskai'] = $a->children(2)->plaintext; $zaidejas['ppokytis'] = $a->children(3)->plaintext; $zaidejas['tskaicius'] = $a->children(4)->plaintext; $zaidejai[] = $zaidejas; } } //pašalinam nereikalingus masyvo elementus (lentelės heading'us) unset( $zaidejai[909] ); unset( $zaidejai[808] ); unset( $zaidejai[707] ); unset( $zaidejai[606] ); unset( $zaidejai[505] ); unset( $zaidejai[404] ); unset( $zaidejai[303] ); unset( $zaidejai[202] ); unset( $zaidejai[101] ); unset( $zaidejai[ 0 ] ); //sutvarkom array keys $zaidejai = array_values( $zaidejai ); //pažiūrim gautą masyvą echo '<pre>'; print_r( $zaidejai ); echo '</pre>'; ?>
     
    Štai dar vienas pavyzdys, kuriame gauname filmo reitingą iš imdb.com:

    <?php //simple html dom biblioteka include('simple_html_dom.php'); //filmo url $url = 'http://www.imdb.com/title/tt0485947/'; //gauname svetainės html $html = file_get_html($url); //gauname filmo reitingą $ratio = $html->find('span.rating-rating', 0)->plaintext; echo $ratio; ?>
     
     
    Pabaigai, noriu paminėti, kad su web scrapping galima sukurti gausybę naudingų ir niekam nekenkiančių dalykėlių, tačiau su juo galima pilnai pavogti turinį is RSS srauto ar iš paprasčiausios svetainės. Bet kaip tai padaryti - susigalvokite patys.
     
    Ir tikiuosi, jog jums patiko, bei buvo naudingas pirmasis mano straipsnis uždarbis.lt forume :)
  15. Patinka
    Lapinskis sureagavo į !karolis Demotivacija.lt   
    Na aš tokio projekto nekuriu, bet iš pradžių bandyčiau taip:
    1) Sukurti turinio valdymo sistemą, tobulesnę už demotyvaciją.
    2) Pradėti dėti kokybiškas demotyvacijas, pradžiai verstas iš kitų tinklalapių, vėliau nauji vartotojai prisijungtų.
    3) facebook marketingas, lankytojų pritraukimas į tinklalapio facebook puslapį.
    4) Pvz cha.lt tinklalapyje užsakytas konkursas geriausia demotyvacija (lankytojai sukuria demotyvaciją sukurtame puslapyje ir jas vėliau talpina į cha.lt) 10 geriausių demotyvacijos autorių gauna po ipod touch 4g ar dar ką nors.
    5) Vėliau kokursai pratesiami pačiame tinklalapyje su nuorodų sistema, kas daugiau pakviečia draugų, kurie užsiregistruoja (su tam tikrais saugikliais nuo sukčių), tas gauna prizus (pvz pirmi 3 po ipad2, ir likusieji 30 po ipod 5g ir dar 100 laimingųjų gautų įvairių suvenyrų, šalikų su tinklalapio logo.)
    6) Reklama populiariuose portaluose (cha.lt, uzdarbis.lt, supermama.lt, technologijos.lt, demotyvacija.lt, balsas.lt, alfa.lt ir kt)
    7) Užsakomieji straipsniai.
    8) Reklama zipfm radijos eteryje su radistais.
     
    Ir dar dauk kitų būdų.
  16. Patinka
    Lapinskis gavo reakciją nuo Absas Vieno puslapio informacijos atkartojimas kitame.   
    Na iš tikrųjų nėra ten taip baisiai sudėtinga... :) tik, kad reikia gerai išnagrinėti puslapio struktūrą norint pasiimti iš jo duomenis.
     
    Bet tebūnie, štai tave užvedu ant kelio:
     

    <?php header('Content-Type: text/html; charset=utf-8'); //nuimame laiko limita set_time_limit(0); //memory limit ini_set('memory_limit','128M'); //simple html dom include('simple_html_dom.php'); //url $url = 'http://www.statoil.lt/index.php/vidutines_degalu_kainos_pilno_aptarnavimo_degalinese/5231'; //gauna html is failo $html = file_get_html($url); //gauname kainas foreach($html->find('.fuel_prices_list table tbody tr td strong') as $kaina) { echo '<pre>'; echo $kaina->plaintext . "\n"; echo '</pre>'; } ?>
     
    Gal padėjau kažkiek :)
  17. Patinka
    Lapinskis gavo reakciją nuo Absas Vieno puslapio informacijos atkartojimas kitame.   
    Na iš tikrųjų nėra ten taip baisiai sudėtinga... :) tik, kad reikia gerai išnagrinėti puslapio struktūrą norint pasiimti iš jo duomenis.
     
    Bet tebūnie, štai tave užvedu ant kelio:
     

    <?php header('Content-Type: text/html; charset=utf-8'); //nuimame laiko limita set_time_limit(0); //memory limit ini_set('memory_limit','128M'); //simple html dom include('simple_html_dom.php'); //url $url = 'http://www.statoil.lt/index.php/vidutines_degalu_kainos_pilno_aptarnavimo_degalinese/5231'; //gauna html is failo $html = file_get_html($url); //gauname kainas foreach($html->find('.fuel_prices_list table tbody tr td strong') as $kaina) { echo '<pre>'; echo $kaina->plaintext . "\n"; echo '</pre>'; } ?>
     
    Gal padėjau kažkiek :)
  18. Patinka
    Lapinskis gavo reakciją nuo Absas Vieno puslapio informacijos atkartojimas kitame.   
    Na iš tikrųjų nėra ten taip baisiai sudėtinga... :) tik, kad reikia gerai išnagrinėti puslapio struktūrą norint pasiimti iš jo duomenis.
     
    Bet tebūnie, štai tave užvedu ant kelio:
     

    <?php header('Content-Type: text/html; charset=utf-8'); //nuimame laiko limita set_time_limit(0); //memory limit ini_set('memory_limit','128M'); //simple html dom include('simple_html_dom.php'); //url $url = 'http://www.statoil.lt/index.php/vidutines_degalu_kainos_pilno_aptarnavimo_degalinese/5231'; //gauna html is failo $html = file_get_html($url); //gauname kainas foreach($html->find('.fuel_prices_list table tbody tr td strong') as $kaina) { echo '<pre>'; echo $kaina->plaintext . "\n"; echo '</pre>'; } ?>
     
    Gal padėjau kažkiek :)
  19. Patinka
    Lapinskis sureagavo į theScientistAdam Sveikinasi Adomas   
    Sveiki. Čia aš - Adomas :)
     
    Lankausi keletą mėnesiukų Uždarbis.lt, nes pradėjau intensyviai programuoti. Norėjau pasisveikinti. :)
  20. Patinka
    Lapinskis gavo reakciją nuo EdFoX Prisijungimas su SESSION's   
    Iš tikrųjų tai nelabai. :) Tik pasibandęs buvau. Šiaip esu Codeigniter fanas :)
  21. Patinka
    Lapinskis sureagavo į twea Draugystės drama (reali situacija)   
    Manau kad labai sudėtinga viskas, kiekviena situacija komplikuota savaip, todėl tokių teiginių kaip "visada aukočiau draugus vardan sėkmės" tikrai nepasigirs iš mano lūpų.
     
    Tačiau - manau mergina pasirinko teisingai. Tai tapo judviejų draugystės išbandymu, kadangi palikta draugė turėjo pamiršti pavydą, širdgėlą ir savigailą - nes tai egoistiška - ir pagalvoti apie draugę, kuriai gali nusišypsoti sėkmė, bei visapusiškai ją palaikyti ir paremti. Juk draugo laimė - tai ir tavo laimė.
     
    Na o jei draugė to nesupranta - matyt anokia ji ir draugė - pavydės kiekviename žingsnyje, kai Sue pasiseks geriau - ne bičiulė, o konkurentė... Tikras draugas verks iš džiaugsmo, kai jo draugui seksis - nesvarbu ar dėl talentingo pasirodymo, ar dėl pakelto atlyginimo, ar dėl sėkmės meilėj...
  22. Patinka
    Lapinskis sureagavo į !karolis Kompiuterinė OS   
    Pavėlavai 30 metų.
  23. Patinka
    Lapinskis sureagavo į play iPalanga.lt - Nuomos pasiūlymai Palangoje ir Šventojoje   
    Neįsivaizduoju kokias jūs ten svetaines kuriate ir kaip draugaujate su php, jai neužmatėte vienos iš dažniausiai pasitaikančių internetinių svetainių spragų (XSS) ir dar pačioje elementariausioje svetaines vietoje - search laukelis. Jame įrašyti simboliai nėra užkoduojami/paverčiami paprastu tekstu ir tinklapyje atvaizduojami kaip skriptai - galima naudotis kai kuriomis javascript/html funkcijomis. Pvz: užėjus i tą puslapį kuriame paieškos tinklapis turėtų atvaizduoti paieškos rezultatus paprastu(plain) tekstu, yra paleidžiamas javascript/html skriptas tinklapį aplankiusio žmogaus (aukos) naršyklėje. Net naujokas svetainių saugume tikrindamas jūsų tinklapio spragas užtruktų ne daugiau 10 minučių surasti šiai klaidai ir gal būt ja pasinaudoti blogiems tikslams. Šiuo atveju galima atlikti tikrai nemažai: redirectai, cross site defacement (raktažodžių panelė skriptą įrašytą į search laukelį atvaizduoja beveik kiekviename puslapyje, taippat ir pagrindiniame, galimas viso tinklapio redirectas i blogos reputacijos tinklapį), įmanomas net infektuoti aukas javascript malware apsilankius specialiai sudaryta nuoroda. Atrodo tokia maža klaidelė, nedadėta poros simbolių ir žodžių skripte, o pasekmės gali būti baisios, nors tinklapis nėra gigantas ir lankytojų srautas nėra labai didelis. Patarčiau tinklapio kūrėjui 10-20 minučių pasiskaityti apie html funkcija: htmlspecialchars - universalus būdas BEVEIK visiškai apriboti simbolius, kuriuos vartotojai gali įrašyti į nustatytus laukelius. Parašiau šį postą čia, o ne privačiai nes esu įsitikinęs, kad labai daug žmonių vis dar nežino kas yra XSS ir kokios gali būti pasėkmės jai neapribojes simbolių atvaizduosi vartotojų įrašytą informacijos į laukelius, kaip skriptai kuriais įsilaužėlis galės minipuliuoti tinklapio reputacija ir lankytojų neapdairumu redirectindamas iš saugaus tinklapio kurį norite matyti į tinklapio kopija, kuri gali pavogti jūsų privačius duomenis.
     
    Pora nuorodų tinklapio savininkui: http://php.net/manual/en/function.htmlspecialchars.php / http://stackoverflow.com/questions/2894466/xss-attack-to-bypass-htmlspecialchars-function-in-value-attribute / google.com
  24. Patinka
    Lapinskis gavo reakciją nuo zadras Web scrapping naudojant PHP   
    Sveiki uždarbiečiai, jau vienur prisižadėjau, kad parašysiu šiek tiek apie web scrapping. Tai pirmas mano straipsnis šiame forume, todėl nemaišykit su žemėmis be pagrindo. Konstruktyvi kritika visada laukiama, o šiaip ir pasiginčyti galiu, jeigu atsiras žmonių, manančių, kad mano pateikti programinio kodo pavyzdžiai yra neteisingi ar, kad galima padaryti kažką geriau. Pats esu gana dar jaunas ir daug ko nemoku, tačiau trokštu išmokti. Iš savo, ir kitų mano artimųjų patirties galiu pasakyti, kad srities specialistu tampi mokydamas kitus.
     
    Pradedant, norėčiau apžvelgti kam web scrapping gali būti panaudojamas. Šį metodą programuotojai naudoja tada, kuomet reikia gauti informacijos iš kitos svetainės ir nenorima dirbti "copy->paste" principu. Web scrapping tai padarys už jus. Kadangi daugiausia teko programuoti PHP programavimo kalba, tai tik ja galėsiu pateikti pavyzdžių.
     
    Vogti/skolintis/pasiimti informaciją PHP pagalba iš kitų interneto svetainių galima keletu būdų. Tačiau aprašysiu tik du - vieną, kuris nepatogus ir jį naudojant gali prasidėti rimtas "galvos skausmas", ir antrą - kurį pats naudoju ir rekomenduoju naudoti kitiems.
     
    Pirmasis būdas. Jame naudojama curl biblioteka, preg_match_all funkcija. Blogiausia šio metodo savybė - reikia rašyti regexp išraiškas. Man (spėju ir kitiems programuotojams) tai yra "pain in the ######". Šis metodas turi ir pliusų - juo parašyti script'ai veikia šiek tiek greičiau negu antruoju.
     
    Daug netuščiažodžiaujant, štai kodo pavyzdys (ačiū Sauliui):
     

    <?php function rasti_turini( $pradzia, $galas, $url ) { $pradzia = str_replace('/', '\/', $pradzia); $galas = str_replace('/', '\/', $galas); $regexp = '/' . $pradzia . '(.+?)' . $galas . '/'; preg_match_all($regexp, $url, $atitike); return $atitike[0]; } function curl( $url ) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); return $result; } //magic (: $url = curl( 'http://www.orai.lt/lt/prognozes/vilnius' ); $orai = rasti_turini( '<td class="oraiTableRow">', '</td>', $url ); //atvaizduojame antrąjį masyvo elementą echo $orai[1]; //jeigu norite pažiūrėti, kaip atrodo gautas masyvas, atkomentuokite sekančias 3 eilutes //echo '<pre>'; //print_r( $orai ); //echo '</pre>'; ?>
     
     
    Antrasis būdas. Tai mano mėgstamiausias, ir mano nuomone geriausias būdas gauti informaciją iš kito tinklalapio. Kaip taip padaryti? Ogi pasitelkti simple html DOM biblioteką. :) Jos pagalba galima rašyti elementų select'orius jQuery stiliumi.
     
    Pvz.:

    $html->find('table.bioTableAlt tbody tr');
     
    Argi gali būti patogiau ir greičiau? :rolleyes:
     
    Tarkim turime užduotį, mums reikia gauti visą geriausių teniso žaidėjų sąrašą iš šitos svetainės. Taip, visą 1000 :) Atkreipkite dėmesį, kad lentelė atnaujinama kiekvieną pirmadienį. Kad šis kodas veiktų, jums prireiks parsisiųsti simple html dom klasę.
     
    Kodas:

    <?php //nuimame laiko limita set_time_limit(0); //simple html dom include('simple_html_dom.php'); //------------------------------------------------------------------------------ // Nuorodos //------------------------------------------------------------------------------ //paskutinio pirmadienio data $date = date('d.m.Y', strtotime('last monday')); //užkomentuokit dali nuorodu, jeigu norit greiciau pamatyti rezultata $urls = array(); $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=1'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=101'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=201'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=301'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=401'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=501'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=601'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=701'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=801'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=901'; //inicijuojam masyvą $zaidejai $zaidejai = array(); //praskanuojam visas nuorodas foreach($urls as $url) { //gauname duomenis iš svetainės $html = file_get_html($url); foreach( $html->find('table.bioTableAlt tbody tr') as $a ) { // Duomenys apie žaidėją: // pozicija --- vardas, šalis --- žaidėjo taškai --- pozicijos pokytis --- turnyrų skaičius $zaidejas['pozicija'] = $a->children(0)->plaintext; $zaidejas['vardas'] = $a->children(1)->plaintext; $zaidejas['taskai'] = $a->children(2)->plaintext; $zaidejas['ppokytis'] = $a->children(3)->plaintext; $zaidejas['tskaicius'] = $a->children(4)->plaintext; $zaidejai[] = $zaidejas; } } //pašalinam nereikalingus masyvo elementus (lentelės heading'us) unset( $zaidejai[909] ); unset( $zaidejai[808] ); unset( $zaidejai[707] ); unset( $zaidejai[606] ); unset( $zaidejai[505] ); unset( $zaidejai[404] ); unset( $zaidejai[303] ); unset( $zaidejai[202] ); unset( $zaidejai[101] ); unset( $zaidejai[ 0 ] ); //sutvarkom array keys $zaidejai = array_values( $zaidejai ); //pažiūrim gautą masyvą echo '<pre>'; print_r( $zaidejai ); echo '</pre>'; ?>
     
    Štai dar vienas pavyzdys, kuriame gauname filmo reitingą iš imdb.com:

    <?php //simple html dom biblioteka include('simple_html_dom.php'); //filmo url $url = 'http://www.imdb.com/title/tt0485947/'; //gauname svetainės html $html = file_get_html($url); //gauname filmo reitingą $ratio = $html->find('span.rating-rating', 0)->plaintext; echo $ratio; ?>
     
     
    Pabaigai, noriu paminėti, kad su web scrapping galima sukurti gausybę naudingų ir niekam nekenkiančių dalykėlių, tačiau su juo galima pilnai pavogti turinį is RSS srauto ar iš paprasčiausios svetainės. Bet kaip tai padaryti - susigalvokite patys.
     
    Ir tikiuosi, jog jums patiko, bei buvo naudingas pirmasis mano straipsnis uždarbis.lt forume :)
  25. Patinka
    Lapinskis sureagavo į FLSHS Lietuvos domeningas atsilikes ar kazko nesuprantu?   
    Hehe :) pagaliau puiki proga papasakoti dar viena kartą viską:
     
    Pas mus, kai keičiamas domeno savininkas, tai pakeičiama absoliučiai viskas - domeno RN, savininko duomenys domreg sistemoje ir domenas prasitęsia metams laiko. Tai kainuoja 25lt + PVM ir būtent šis būdas yra aprašytas domreg.lt taisyklėse.
     
    IV - domeno RN yra nepakeičiamas, domeno senasis sąvininkas FIGURUOJA DOMREG DUOMENŲ BAZĖJE. Tai jeigu naujasis savininkas kažką pridirbs ir policija kreipsis į domreg - gaus senojo savininko duomenis ir patampys po policijas.. kol iš IV bus gautas raštas, jog domenas yra perleistas kitam asmeniui. IV abiejų accountai bus suspenduoti, kol bus išaiškinta visa situacija.
     
    Nemokamų tikrų sąvininkų keitimų NĖRA. Toks dalykas kaip PUSH'as nėra aprašomas domreg taisyklėse. Žinoma, sutiknu su tuom, jog DomReg yra dar atsilikęs pasaulyje....
     
    Plačiau:
     
    http://domreg.lt/static/doc/public/procedural_regulation-lt.pdf
    XI skirsnis
    Perkėlimas
     
    O galų gale apie kainas:
    http://domreg.lt/static/doc/public/base_fee_rates-lt.pdf
     
    Perkėlimo procedūra: kaip už atskiras procedūras ( su numeriuku 5 ).
     
    5 numeriukas sako: Pradinis Pareiškėjas (kas perleidžia teises į Subdomeną) neatlygintinai atlieka panaikinimo procedūrą, naujas Pareiškėjas (kas įgyja teises į Subdomeną) - teikia Paraišką ir apmoka už šią procedūrą nustatytą bazinį atlyginimą
×
×
  • Pasirinkite naujai kuriamo turinio tipą...