루비 문법으로 js의 ready()나 $(window).load() 의 기능을 하는 함수


네이버 api에서는 제공하지 않는 정보를 가져오기 위해서 네이버 지도 사이트에서 직접 크로울링을 하는 중에 있습니다.

근데 하다보니 네이버 지도가 2중으로 로딩?이

되는 것 같더라구요

처음에 기본 틀만 로딩을 하고 그 다음에 검색어로 내용을 체워넣는 그런 식 인거 같습니다.

그래서 문서의 로딩이 전부 다 끝났을 시점에 크로울링을 해야 할 것 같은데

ruby에서 그런 로딩이 전부 끝난 시점을 알 수 있는 함수가 있는지 알고싶습니다.

또는 위의 문제를 해결하기위해 다른 방법이 있는지 알고 싶습니다.

  • 2016년 07월 20일에 수정됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.
  • 2016년 07월 20일에 작성됨

조회수 144


1 답변


좋아요
1
싫어요
채택취소하기

브라우저에서 페이지가 로딩한 다음에 클라이언트에서 스크립트가 동작한 결과를 받아야 원하시는 결과를 얻을 수 있겠네요. 그러려면 실제 브라우저를 실행해서 결과를 가져오는 selenium같은 도구를 사용하셔야 합니다.

아래 코드를 참고하시면 브라우저를 실행해서 map.naver.com을 읽어온 다음에 그 결과를 doc에 저장해 줍니다. 이제 Nokogiri의 기능을 이용해서 원하는 값을 읽어오시면 됩니다.

require 'selenium-webdriver'
require 'nokogiri'

driver = Selenium::WebDriver.for :safari
driver.get "http://map.naver.com"

doc = Nokogiri::HTML(driver.page_source)

저는 Safari브라우저를 이용했는데요. Selenium::WebDriver.for :firefox라고 하면 firefox를 실행해서 결과를 읽어옵니다.

  • 2016년 07월 20일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close