Dalam tutorial ini Ya'kob akan menggunakan Mechanize didalam ruby environment untuk mengikis (dalam inggeris scrape) data dari website www.mudah.my. Dalam tutorial ini Ya'kob akan menggunakan os Ubuntu 11.04 64bit
Makluman:
Tutorial ini adalah untuk tujuan pembelajaran sahaja & bukan bertujuan untuk membahayakan mana-mana pihak.
Tujuan:
Teknik ini membenarkan kita untuk meng-Index semula informasi yang diperoleh mengikut keperluan kegunaan kita. Mungkin kita hendak mencari kereta di mudah.my yang mempunyai sekian2 mileage.. atau kereta yang transmisinya manual sahaja, tetapi mudah.my tidak menyediakan fungsi carian yang sedemikian. Dengan teknik ini, ia membolehkan kita boleh memprogramkan/mengindex informasi yang diperoleh, mengikut cara kita.
Prerequisite:
Ruby1.9 , Mechanize gem, Hpricot gem dan lain2 dependent lib eg: libxslt-ruby libxslt-ruby1.8 libxslt1.1 libxslt1-dev libxslt1-dbg serta juga gem nokogiri dan library2 dependency-nya
Kaedah:
1. Install rvm (ruby version manager)
$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)2. Install ruby
$ [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" $ rvm install 1.9.2 $ rvm --default use 1.9.23. Install gem2 keperluan
$ gem install mechanize $ gem install hpricot4. Masuk kedalam Interactive Ruby Console
akob@ubuntu:~$ irb ruby-1.9.2-p290 :001 >5. Paste code dibawah didalam console. oh.. gantikan /home/akob dengan home path anda.
6. Buka file log di directory home anda dengan web browser. Anda akan dapati hasil pengikisan anda disitu ;)
Code-nya:
require 'mechanize' require 'hpricot' agent = Mechanize.new page = agent.get('http://www.mudah.my/Malaysia/Cars-for-sale-1020') @response = page.content doc = Hpricot(@response) html = doc.search("a>img").search("..")[1,41].to_html File.open("/home/akob/log",'w'){|f| f.write(html)}
Rujukan Hpricot selector:
https://github.com/hpricot/hpricot/wiki/hpricot-css-search
https://github.com/hpricot/hpricot/wiki/supported-css-selectors
anda juga boleh mencuba secara online pada url demo dibahagian Sumber dibawah
Hasilnya:
Sumber:
http://hpricot.com/demonstrations
http://rorguide.blogspot.com/2011/04/simple-ruby-screen-scraper-using.html