‚½‚¾‚��‚ܐ®—’†B
Blogspot (Blogger?) ‚Ɉڍs‚µ‚Ü‚µ‚½I
ƒ^ƒCƒ€ƒ‰ƒCƒ“ | ‹ZpŒn | TIPS | ƒ‰ƒCƒtƒnƒbƒNŒn | ‚»‚Ì‘¼ | ï¿½ï¿½‹LƒJƒeƒSƒŠˆÈŠO‚́A‰E‚Ì—“‚̉º‚̃^ƒOƒNƒ‰ƒEƒh‚ցI
.

2014”N05ŒŽ04“ú

RubyŠÖ˜AHTML/WebƒXƒNƒŒƒCƒsƒ“ƒOEƒ‰ƒCƒuƒ‰ƒŠ‚Ü‚Æ‚ß 2014”N”Å

¦[ƒuƒbƒNƒ}[ƒN]ƒ{ƒ^ƒ“‚Ì’†‚É delicious, reddit, digg, Google+(G+) ‚̃{ƒ^ƒ“‚à‚ ‚è‚Ü‚·B
-->

2014”N5ŒŽŽž“_‚ŁAHTML/WebƒXƒNƒŒƒCƒsƒ“ƒO‚ÉŽg‚¦‚é Ruby ŠÖ˜A‚̃‰ƒCƒuƒ‰ƒŠ‚½‚¿‚ɂ‚��‚āA‘O‰ñ (2010”N) ‚̂܂Ƃ߂Ƃ̍·•ª‚ƂƂà‚ɁAŠT—v‚ð‚܂Ƃ߂½BŠeX‚̃‰ƒCƒuƒ‰ƒŠ‚Ì“Á’\‚Æ“üŽèæAHPAƒCƒ“ƒXƒg[ƒ‹•û–@Aƒ‰ƒCƒZƒ“ƒX‚Ȃǂɂ‚��‚ÄŠÈ’P‚Éà–¾‚µ‚��‚éB

¡‰ñˆµ‚Á‚��‚é‚̂́Anokogiri, Mechanize, Selenium-webdriver, Capybara-webkit, poltergeist ‚Ì 5 ‚BRuby ˆÈŠO‚É‚àAPhantomJS, Yahoo!Pipes, ScraperWiki, kimono ‚ɂ‚��‚Ä‚àŽæ‚èã‚��‚½B

ˆê——‚ð‚܂Ƃ߂½‚Ì‚¿A”äŠr‚Æ•]‰¿A‚�N‚·‚·‚߂̗p“r‚ɂ‚��‚ÄŠÈŒ‰‚ɏq‚�~‚éB


sƒXƒ|ƒ“ƒT[ƒhƒŠƒ“ƒNt

”wŒi

2010”N‚ɁuRubyŠÖ˜AHTML/WebƒXƒNƒŒƒCƒsƒ“ƒOEƒ‰ƒCƒuƒ‰ƒŠ‚܂Ƃ߁v‚Æ‚µ‚ď‘‚��‚½‹LŽ–‚ł́AŽŸ‚̂悤‚È 6 ‚‚̃‰ƒCƒuƒ‰ƒŠ‚ðˆµ‚Á‚½: Hpricot (Ž·•M“–Žž‚̃o[ƒVƒ‡ƒ“ 0.8.2BˆÈ‰º“¯—l), Mechanize (1.0.0), ScrAPI toolkit (1.2.0), ScRUBYt! (0.4.06), nokogiri (1.4.3.1).

‚�}‚Ì‚¤‚¿A

  • Hpricot ‚́A2014”N5ŒŽŒ»ÝA2 ”N‘O‚ÉŠJ”­‚𒆎~‚µ‚��‚é
    (gHpricot is overh)
  • ScrAPI toolkit ‚́A2.0.0 ‚ª 3 ”N‘O‚ÉƒŠƒŠ[ƒX‚³‚êARuby 1.9 Œn“‚ð
    ƒTƒ|[ƒg‚µ‚��‚éB‚µ‚©‚µA‚à‚¤ Ruby ‚Í 2.0 Œn“‚ªŽå—��‚ÆŒ©‚��‚��‚Ì
    ‚ł͂Ȃ��‚©B
  • ScRUBYt! ‚́AHpricot ‚Æ Mechanize, Ruby ‚Í 1.8 Œn“‚ð‘O’ñ‚Æ‚µAURL
    ‚ÍƒŠƒ“ƒNØ‚ꂪ–ڗ��‚B
    ‚Å‚ ‚é‚�}‚Æ‚ª•ª‚©‚Á‚½B

‚æ‚Á‚āA–{‹LŽ–‚ł͂�}‚ê‚ç‚ɂ‚��‚Ă͏Ȃ­B

ˆÈ‰ºA‘O‰ñ‚Ì‹LŽ–‚©‚ç‚ÌŽáŠï¿½}‚Ì•âˆâ‚ð‚�N‚�}‚Ȃ��‚‚A2014”N5ŒŽŒ»ÝÅV‚ÌRubyŠÖ˜AHTML/WebƒXƒNƒŒƒCƒsƒ“ƒOEƒ‰ƒCƒuƒ‰ƒŠ‚̏󋵂ɂ‚��‚Ă܂Ƃ߂éB


nokogiri (1.6.1; 1.6.2.rc2)

nokogiri ‚́Aƒp[ƒT‚Å‚ ‚éB‘O‰ñ‚©‚ç‚ÍŠÇ—ŽÒAƒzƒXƒgêŠ‚ª•Ï‚í‚Á‚½‚悤‚¾B

  • à–¾
    Nokogiri ‚́AHTML, XML, SAX, ‚»‚µ‚Ä Reader ‚̃p[ƒT‚̂ЂƂBNokogiri
    ‚Ì‘½‚­‚Ì‹@”\‚Ì’†‚ɂ́AXPath ‚â CSS3 ƒZƒŒƒNƒ^‚ð’ʂ��‚ăhƒLƒ…ƒƒ“ƒg“à‚ð
    ŒŸõ‚Å‚«‚é‚à‚Ì‚à‚ ‚éB(README.rdoc)
  • ƒAƒbƒvƒf[ƒgó‹µ 2008-2014.
  • RubyGems.org https://rubygems.org/gems/nokogiri
  • ƒCƒ“ƒXƒg[ƒ‹ [sudo] gem install nokogiri
  • ƒ\[ƒXƒR[ƒh https://github.com/sparklemotion/nokogiri
  • ƒ‰ƒCƒZƒ“ƒX The MIT License

Mechanize (2.7.3; 2.7.4.beta2)

Mechanize ‚́AƒwƒbƒhƒŒƒX‚ȃuƒ‰ƒEƒUƒVƒ~ƒ…ƒŒ[ƒ^‚Å‚ ‚éB‚½‚¾‚µAJavaScript ‚̏ˆ—‚͂ł«‚Ȃ��Bƒo[ƒVƒ‡ƒ“ 1.0.0 ‚©‚ç Hpricot ‚ł͂Ȃ­ nokogiri ‚ðÌ—p‚µ‚��‚éBŒ»Ý‚̓R[ƒh‚ÌŠÇ—‚àAnokogiri ‚Æ“¯‚��l‚½‚¿‚ª‚â‚Á‚��‚邿‚¤‚¾B

  • à–¾
    Mechanize ƒ‰ƒCƒuƒ‰ƒŠ‚́AWeb ƒTƒCƒg‘€ì‚ÌŽ©“®‰»‚Ì‚½‚߂Ɏg‚í‚ê‚éB
    Mechanize ‚́AŽ©“®‚ŃNƒbƒL[‚ÌŠi”[E‘—M‚ð‚µAƒŠƒ_ƒCƒŒƒNƒg‚ð‚½‚Ç‚èA
    ‚»‚µ‚ÄƒŠƒ“ƒN‚ð’Ç‚Á‚½‚èƒtƒH[ƒ€‚ðƒTƒuƒ~ƒbƒg‚µ‚½‚è‚Å‚«‚éBƒtƒH[ƒ€‚Ì
    ƒtƒB[ƒ‹ƒh‚½‚¿‚́A’l‚𖄂߂ăTƒuƒ~ƒbƒg‚Å‚«‚éBMechanize ‚͂܂½A—š—ð
    ‚Æ‚µ‚Ä‚ ‚È‚½‚ª–K‚ꂽƒTƒCƒg‚½‚¿‚̃gƒ‰ƒbƒN‚ðA•ÛŽ‚·‚é‚�}‚Æ‚à‚Å‚«‚éB
    (README.rdoc)
  • ƒAƒbƒvƒf[ƒgó‹µ 2005-2014.
  • RubyGems.org https://rubygems.org/gems/mechanize
  • ƒCƒ“ƒXƒg[ƒ‹ [sudo] gem install mechanize
  • ƒ\[ƒXƒR[ƒh https://github.com/sparklemotion/mechanize
  • ƒ‰ƒCƒZƒ“ƒX The MIT License

selenium-webdriver (Selenium Client & WebDriver) (2.41.0)

Selenium ‚ɂ‚��‚ẮA‘O‰ñ‚Ì‹LŽ–‚É“ü‚ê‚é‚�~‚«‚¾‚Á‚½BSelenium ‚̓XƒNƒŒƒCƒp[‚Ƃ��‚¤‚æ‚è‚́AWeb ƒTƒCƒg‚̃eƒXƒgŽ©“®‰»‚Ì‚½‚߂̃fƒoƒCƒX(ƒuƒ‰ƒEƒU)Eƒhƒ‰ƒCƒo‚Æ‚»‚Ì API ƒ‰ƒCƒuƒ‰ƒŠ‚¾‚ªAƒXƒNƒŒƒCƒsƒ“ƒO‚É‚àŽg‚¤‚�}‚Æ‚ª‚Å‚«‚éB

Selenium ‚́Aƒuƒ‰ƒEƒU‚𒼂ɃRƒ“ƒgƒ[ƒ‹‚·‚éƒAƒvƒ[ƒ`‚Å‚ ‚éB‚µ‚©‚µ ‚��‚í‚ä‚é ƒwƒbƒhƒŒƒX (headless ‚ÍŽñ‚È‚µ‚ŁA‚�}‚�}‚ł̈Ӗ¡‚͉æ–Ê•\ަ‚È‚µ‚Ƃ��‚¤‚�}‚Æ) ‚É‚à‚Å‚«‚éB‘Ήžƒuƒ‰ƒEƒU‚́A‘ã•\“I‚È‚à‚Ì: Firefox, Chrome, IE ‚̓Tƒ|[ƒg‚³‚ê‚��‚éB

ƒhƒ‰ƒCƒo‘€ì‚Ì‚½‚߂̃Nƒ‰ƒCƒAƒ“ƒgŒ¾Œê‚Í Ruby ‚Ì‘¼‚É‚àAJava, C#, Python, JavaScript (node.js) ‚ª‚ ‚éB

Selenium IDE (‘€ì‚ð‹L˜^‚µ‚āAƒeƒXƒgƒP[ƒX‚ÌŒ`‚Æ‚µ‚ăR[ƒh‚ð“f‚��‚Ä‚­‚ê‚éƒuƒ‰ƒEƒU‘¤‚̃vƒ‰ƒOƒCƒ“) ‚ƁAˆê‚ÉŽg‚¤‚ƁA—v‘f‚ÌŽw’èƒR[ƒh‚ðŠÈ’P‚ɂ‚­‚ê‚āA‚�N‚·‚·‚ß (Excel ‚Ń}ƒNƒ‚Ì‹L˜^‚ð‚·‚é‚Æ‚«‚̂悤‚Ȋ�L‚��‚Å)B

Capybara (2.2.1), capybara-webkit (1.1.1)

‚à‚Æ‚́ARails ‚̃Cƒ“ƒeƒOƒŒ[ƒVƒ‡ƒ“EƒeƒXƒg‚ÉŽg‚í‚ê‚��‚½‚»‚¤‚¾B

Cucamber ‚â capybara-webkit ‚ƂƂà‚É Žg‚¤‚�}‚ƂŁARails ‚â JavaScript ‚ðŽg‚Á‚½ƒTƒCƒg‚̃eƒXƒg‚É‚àŽg‚¦‚é‚»‚¤‚¾ (‚½‚¾‚µ capybara-webkit Žg—pŽž‚́Aqt ‚Ì—pˆÓ‚à•K—v)B

poltergeist (1.4.0)

Poltergeist ‚́AŒãq‚Ì PhantomJS ‚̃‰ƒbƒp[‚Å Capybara ‚Æ‘g‚ݍ‡‚킹‚ÄŽg‚¤B
capybara-webkit ‚æ‚è‚à qt ‚ª‚Ȃ��‚Ô‚ñ‚��‚��‚©‚àH

  • à–¾
    Poltergeist (ƒ|ƒ‹ƒ^[ƒKƒCƒXƒg) ‚́ACapybara ‚Ì‚½‚߂̃hƒ‰ƒCƒo‚ŁA
    ƒwƒbƒhƒŒƒX‚È WebKit ƒuƒ‰ƒEƒU‚Æ‚µ‚ăeƒXƒg‚Å‚«‚邿‚¤‚É‚·‚é‚à‚́B
    PhantomJSƒx[ƒXB(RubyGems.org‚æ‚è)
  • ƒAƒbƒvƒf[ƒgó‹µ 2013-2013
  • RubyGems.org https://rubygems.org/gems/poltergeist
  • ƒCƒ“ƒXƒg[ƒ‹ [sudo] gem install poltergeist
  • ƒ\[ƒXƒR[ƒh https://github.com/teampoltergeist/poltergeist
  • ƒ‰ƒCƒZƒ“ƒX MIT

Ruby ˆÈŠOAWeb ƒT[ƒrƒX

PhantomJS (v1.9)

Mechanize ‚ÆŽ—‚��‚邪AJavaScript ‚𒼂ɂ ‚‚©‚¤‘¼A‚³‚ç‚ɂ��‚ë‚ñ‚È‹@”\‚ð”õ‚¦‚½‚à‚̂ɁAPhantomJS ‚ª‚ ‚éBƒwƒbƒhƒŒƒX ‚Ƃ́A‰æ–Ê•\ަ‚ðs‚í‚Ȃ��ƒuƒ‰ƒEƒU‚Ƃ��‚¤‚�}‚ƁBWebKit ‚́AMac OS X ‚Ì•W€ƒuƒ‰ƒEƒU Safari ‚â Google ‚ª’ñ‹Ÿ‚µ‚Ä‚éƒuƒ‰ƒEƒU Chrome ‚ªŽg‚Á‚��‚é HTML ƒŒƒ“ƒ_ƒ‰[B

Žg—p—á‚Æ‚µ‚ẮAƒeƒXƒeƒBƒ“ƒOE‘€ìŽ©“®‰»EƒXƒNƒŠ[ƒ“ƒLƒƒƒvƒ`ƒƒEƒlƒbƒgƒ[ƒNƒ‚ƒjƒ^ƒŠƒ“ƒO‚ª‹“‚��‚ç‚ê‚��‚éBX11 ‚â qt ‚È‚Ç GUI ƒ‰ƒCƒuƒ‰ƒŠ‚àŽg—p‚µ‚��‚Ȃ��‚̂ŁAƒŒƒ“ƒ^ƒ‹ƒT[ƒo‚È‚ñ‚©‚Å‚àAŽg‚¦‚éA‚Ƃ̂�}‚ƁB

  • à–¾
    PhantomJS ‚́AJavaScript API ‚ðŽg‚Á‚½ƒwƒbƒhƒŒƒXŒ^‚Ì WebKitB‚‘��‚ŁA
    ‚��‚ë‚ñ‚ÈWeb•W€‹Zp: DOM ‚̃nƒ“ƒhƒŠƒ“ƒO, CSS ƒZƒŒƒNƒ^, JSON, Canvas,
    SVG ‚½‚¿‚ðƒlƒCƒeƒBƒu‚ɃTƒ|[ƒg‚µ‚��‚éB(HP ‚Ìà–¾‚æ‚è)
  • ƒAƒbƒvƒf[ƒgó‹µ 2010-2014
  • URL http://phantomjs.org/
  • ƒ‰ƒCƒZƒ“ƒX BSD
  • ƒ\[ƒXƒR[ƒh https://github.com/ariya/phantomjs/
  • ƒCƒ“ƒXƒg[ƒ‹ Mac ‚È‚ç brew install phantomjs. ‚à‚µ‚­‚̓_ƒEƒ“ƒ[ƒh‚µ‚ĉð“€

WebƒT[ƒrƒXŒn

Yahoo!Pipes (2007-) US Yahoo! ‚̃T[ƒrƒXBGUI ‚ÅHTML‚Ì—v‘f‚ð‚��‚��‚ê‚éB‚½‚¾‚µA­‚µˆ—ŽžŠÔ‚ªd‚��B

ScraperWiki () ‚́AƒXƒNƒŒƒCƒp[ƒR[ƒh‚ð‹¤—L‚µ‚½‚èA•ҏW‚µ‚½‚èAƒf[ƒ^‚ð’~Ï‚µ‚½‚è‚Å‚«‚éƒTƒCƒgB

ScraperWiki‚́A‚à‚Æ‚à‚ÆƒCƒMƒŠƒX‚ŁA‚ǂ̋cˆõ‚ª‚ǂ̖@ˆÄ‚ÉŽ^ï¿½ï¿½‚Ü‚½‚Í”½‘Ε[‚𓊂��‚½‚©‚ð‹c‰ï‚̃TƒCƒg‚©‚ç‘n‹ÆŽÒ‚̈êl‚ª2003”N ‚ɃXƒNƒŒƒCƒv‚µ‚½‚�}‚Æ‚ð‹NŒ¹‚ÉŽ‚¿‚Ü‚·B

‚È‚ñ‚¾‚»‚¤‚ȁB

kimono‚Ƃ��‚¤Žw’肵‚½ƒEƒFƒuƒTƒCƒg‚ðƒXƒNƒŒƒCƒsƒ“ƒO‚µ‚ÄAPI‰»‚µ‚Ä‚­‚ê‚éƒT[ƒrƒX () ‚Ƃ��‚¤‚Ì‚àŒ©‚‚©‚Á‚½B

”äŠr‚Æ•]‰¿

‚�NŽèŒy‚ɃXƒNƒŒƒCƒsƒ“ƒO‚µ‚½‚��ê‡‚́A‘f‚Ì‚Ü‚Ü‚Ì nokogiriA‚à‚µ‚­‚Í Mechanize ‚ðŽg‚¤‚Ì‚ª‚��‚��‚¾‚낤B

‚Ƃ�}‚낪A‚�}‚ê‚ç‚Í JavaScript ‚ªŽg‚í‚ꂽƒTƒCƒg (‚Æ‚­‚É MS ‚Ì.asp‚ªŽg‚í‚ê‚��‚éƒTƒCƒg‚Æ‚©) ‚ŁA‚¤‚Ü‚­‹@”\‚µ‚Ȃ��ê‡‚ª‚ ‚éBCookie ‚ðŽg‚Á‚½‚ ‚éŽí‚̃vƒƒeƒNƒg‚ðŠ|‚¯‚��‚邿‚¤‚ȃTƒCƒg‚à‚ ‚é (•MŽÒ‚͂�}‚ê‚ÅMechanize‚ð•úŠü‚µ‚½)B

‚�}‚¤‚È‚Á‚½‚Æ‚«‚́Aƒuƒ‰ƒEƒU‚Ì“®ì‚ðŠ®‘S‚ɃGƒ~ƒ…ƒŒ[ƒg‚·‚é‚à‚Ì‚ðŽg‚¤‚µ‚©‚Ȃ��B
Selenium ‚©AƒŠƒ‚[ƒgƒzƒXƒg‚Å‚â‚é‚�}‚Æ‚ª”O“ª‚É‚ ‚é‚È‚ç‚Î X (‚Ƃ��‚¤‚©ƒEƒBƒ“ƒhƒEƒVƒXƒeƒ€) ‚Ƃ̈ˑ��‚ª‚Ȃ�� capybara+poltergeist ‚Ì‘g‚ݍ‡‚킹‚ðŽg‚¤‚Ì‚ª‚��‚��‚©‚à B

Ruby ‚ðl—��‚É“ü‚ê‚Ȃ��‚̂ł ‚ê‚΁APhantomJS ‚Í‚©‚È‚è—Ç‚³‹C‚ÉŒ©‚¦‚éB

ƒvƒƒOƒ‰ƒ~ƒ“ƒO‚µ‚½‚­‚Ȃ��ê‡‚́AWeb Œn‚̃XƒNƒŒƒCƒsƒ“ƒOEƒT[ƒrƒX‚ðŽg‚Á‚Ă݂é‚Ì‚à‚��‚��B‚½‚¾A‘��“x‚ɂ‚��‚Ă͒x‚��‚ÆŽv‚¤ (Yahoo!Pipes ‚¾‚¯‚ðŽg‚Á‚Ă݂½Žž‚̊�L‘z)B

¦‚Ȃ�N•MŽÒ‚Í Capybara, PhantomJS ‚ɂ‚��‚Ă͂܂¾G‚Á‚½‚�}‚Æ‚ª‚Ȃ��B

posted by ‚à‚Ó‚à‚Ó at 14:02 | ƒƒ“ƒhƒ“ | Comment(0) | TrackBack(0) | ƒJƒeƒSƒŠ: ‹Zp | ‚}‚̃uƒƒO‚̓ǎ҂ɂȂé | XVî•ñ‚ðƒ`ƒFƒbƒN‚·‚é
‚�}‚Ì‹LŽ–‚ւ̃Rƒƒ“ƒg
ƒRƒƒ“ƒg‚ð‘‚­
‚�N–¼‘O:

ƒ[ƒ‹ƒAƒhƒŒƒX:

ƒz[ƒ€ƒy[ƒWƒAƒhƒŒƒX:

ƒRƒƒ“ƒg: [•K{“ü—Í]

¦ƒuƒƒOƒI[ƒi[‚ª³”F‚µ‚½ƒRƒƒ“ƒg‚̂ݕ\ަ‚³‚ê‚Ü‚·B

‚�}‚Ì‹LŽ–‚ւ̃gƒ‰ƒbƒNƒoƒbƒN
ƒgƒ‰ƒbƒNƒoƒbƒNURL‚́C"Trackback(x)"‚ÌƒŠƒ“ƒN‚ð‰Ÿ‚·‚Æ•\ަ‚³‚ê‚Ü‚·D
�~

‚�}‚̍L‚Í90“úˆÈãV‚µ‚��‹LŽ–‚Ì“Še‚ª‚Ȃ��ƒuƒƒO‚É•\ަ‚³‚ê‚�N‚è‚Ü‚·B