Saturday, August 20, 2011

Mengikis www.mudah.my mengikut cara kita

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.2
3. Install gem2 keperluan
$ gem install mechanize
$ gem install hpricot
4. 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:

Sila tinggalkan komen dibawah jika anda mempunyai sebarang idea & pendapat.

Sumber:
http://hpricot.com/demonstrations
http://rorguide.blogspot.com/2011/04/simple-ruby-screen-scraper-using.html

2 comments:

  1. kalau aku.. aku suka pakai php + curl ja.. pehtu pakai regex filter tag img.. aku tak terer ruby :(

    ReplyDelete
  2. ruby paling simple modern pnye language.. try la..

    ReplyDelete