LightTable에서 Ruby, Nokogiri를 사용하여 실시간 처리

7840 단어 LightTableRuby
REPL 기능을 사용하여 Light Table에서 실시간으로 공식을 평가하고 코드를 작성할 수 있습니다.
실시간 Excel 퍼스(Light Table의 사용법 제2장) - Qita라는 기사를 읽고 난 뒤에도 커튼에 잘 어울리는 것 같아서 루비, 노코기리로 해봤어요.
설치 시 클로저, 파이톤, 자바스크립트 등은 REPL 기능을 사용할 수 있지만 루비는 포함되지 않는다.REPL은 Rubby에서 플러그 인을 설치하여 사용할 수 있습니다.

환경 준비


플러그인 설치

Ctrl + Space에 명령 트레이를 표시하고 Plugins: Show plugin manager에서 Ruby Instarepl을 설치합니다.
Ruby Instarepl에 대한 자세한 내용은 다음을 참조하십시오.
  • existentialmutt/lt-ruby

  • 설치 후 App: Reload Behaviors 명령을 실행하고 다시 로드합니다.
    (Light Table를 다시 시작할 수도 있음)

    Gem 설치


    Ruby Instarepl 설치에 필요한 Gem.
    $ gem install eventmachine
    $ gem install json
    $ gem install method_source
    
    겸사겸사 스크레이퍼에 미리 설치하여 사용Nokogiri.
    $ gem install nokogiri
    
    Windows 7 64비트로 자체 환경을 구축했습니다.DevKit에 가입해야 하고, 이벤트machine은 들어가지 않고, nokogiri는 들어가지 않는 등 번거롭기 때문에 참고 정도의 링크를 붙여야 합니다.
  • Development Kit · oneclick/rubyinstaller Wiki
  • Windows 7은 루비 2.0x64를 5~Event Machine의 문제점과 대책으로 삼았다~루비와 아이폰, UI
  • Ruby 2.0x64를 Windows 7에 배치하고 1~Nokogiri가 들어가지 않는 문제와 대책~ Ruby, 아이폰, UI
  • 코드를 쓰다


    REPL 기능 테스트


    작업 공간에서 적당한 이름으로 폴더를 만들고 코드를 씁니다.이번에는 qita에서 자신이 저장한 투고를 봉쇄해 보았다.

    코드를 쓰기 전에 설치된 플러그인 기능을 사용하십시오.
    명령 트레이에서 Ruby Instarepl: Toggle live mode를 선택합니다.

    라이브 모드가 유효하면 코드를 쓸 때식이 평가된다.
    라이브 모드가 무효이거나 평가가 좋지 않으면Ctrl + Enter 이 줄을 평가할 수 있다.

    대단해!편리합니다!!

    커튼 인코딩


    Instarepl을 사용하여 코드를 만드는 방법과 실제 코드를 만들 때의 절차에 대해 설명한다.doc = Nokogiri::HTML.parse(html, nil, charset)를 통해 모든 원소를 얻을 수 있습니다.Instarepl을 시작했기 때문에 다음 요소의 내용이 표시됩니다.

    이어 크롬의 디벨로퍼 툴스에서 DOM을 확인하고 자크리doc.xpath('//div[@class="activities"]')로 요소를 꺼내 봤다.
    화면에 이 부분이야.

    Light Table은 다음과 같습니다.

    이후 확인doc.xpath('//div[@class="activities"]').length 중 1건만 취득했고, 내용과 DOM을 보고 변경doc.xpath('//div[@class="activities"]/article')했다.
    스케줄러:정말 전부밖에 못 받았네요!
    일단 .length 표시 건수를 더하면 20으로 나와 보도 요소 취득 여부를 확인할 수 있다.

    20개의 제목을 표시하고 싶지만, 우선 1개로 시도해 보세요.

    실제로 .first에서 하나를 얻었고, .css('h1')에서 제목 부분을 얻었고, .inner_text에서 텍스트를 표시하고... 조금씩 시도했다.Instarepl에 표시된 코드가 깨져서 puts 콘솔에 출력합니다.
    마지막으로 20편의 문장 요소를 포함하는 대상(Nokogiri:XML::::Nodeset)에 대해 each에 각각의 제목을 표시하면 완성됩니다.(첫 페이지만 했지만...)
    마지막 코드는 다음과 같다.Proxy 환경에서 진행되기 때문에 설정이 있지만 필요하지 않으면 삭제할 수 있습니다.
    require 'open-uri'
    require 'nokogiri'
    
    # proxy設定
    proxy = "http://YOUR_PROXY:8080"
    proxy_user = "PROXY_USER"
    proxy_pass = "PROXY_PASS"
    options = { proxy_http_basic_authentication: [proxy, proxy_user, proxy_pass] }
    
    # スクレイピング先のURL
    url = 'http://qiita.com/tenten0213/stock'
    
    charset = nil
    html = open(url, options) do |f|
      charset = f.charset
      f.read
    end
    
    doc = Nokogiri::HTML.parse(html, nil, charset)
    doc.xpath('//div[@class="activities"]/article').each do |node|
      puts node.css('h1').inner_text
    end
    

    평소 irb와 pry 등으로 값과 대상을 확인하면서 코드를 쓰지만, 라이트테이블을 사용하면 IDE에서 동시에 진행하기 편하다.
    이번처럼 홈페이지에 낙서하거나 참고한 글처럼 엑셀 퍼스를 하면 수치를 확인하면서 코드를 쓸 수 있어 편리하다고 생각한다.
    편하신 분들은 꼭 해보세요.

    좋은 웹페이지 즐겨찾기