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):
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ę.
Š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 :)
Man nepatiko ne informacijos kiekis, o rašymo stilius, taip kaip viską paaiškini. Atrodo paėmei kokį anglišką šaltinį (dėl duomenų tipų pvz), išvertei pagal save ir viskas :)
Manai perskaitęs porą knygų jau gali tapti "mokytoju" ir mokyti kitus? Be jokios praktikos? :unsure:
(bet šitas kodas tik teorinis, pagal tavo situaciją nerašiau)
Bet jeigu jau nori pradėti rimčiau dirbti, tai iš karto pradėk domėtis apie OOP programavimą, kokį php framework pasiimk ir dirbk :) http://codeigniter.com/ šitą pradžiai rekomenduoju
Aš dėl pirmo - ar ne geriau būtų mysql duomenų bazėje, per phpmyadmin wp_users lentelėje susirasti savo user'į ir pasikeisti prisijungimą?:) kažkur turėjau pasirašęs net specialią užklausą tam, bet "pamečiau" kažkur :)
Taip jau yra, kad yra "programuotojų", kurie nemoka ieškotis informacijos internete. Faktas, kad programuotojas nesugebėdamas ieškotis informacijos niekada nebus geru programuotoju, kol to neišmoks :)
Taip jau yra, kad yra "programuotojų", kurie nemoka ieškotis informacijos internete. Faktas, kad programuotojas nesugebėdamas ieškotis informacijos niekada nebus geru programuotoju, kol to neišmoks :)
Taip jau yra, kad yra "programuotojų", kurie nemoka ieškotis informacijos internete. Faktas, kad programuotojas nesugebėdamas ieškotis informacijos niekada nebus geru programuotoju, kol to neišmoks :)
Manau tai neįmanoma, kai perkrovei puslapį... dar galėjai bandyti spausti "back", buvo šansas, kad rasi savo tekstą. O ateičiai tai, kad išvengtum tokių dalykų bus paskata naudoti ką nors panašaus kaip http://www.mlin.net/Clipomatic.shtml