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

조회수 1815회

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

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

되는 것 같더라구요

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

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

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

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

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를 실행해서 결과를 읽어옵니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)