돈 주고라도 배우고 싶은 동적페이지 데이터 크롤링 (파이썬)

조회수 3390회

KRX나 다음 증권에서 주가 정보를 받아올 때 주식정보가 URL에 따라 변하는 경우 종목코드를 변수로 넣고 웹페이지를 불러와 그 URL페이지(정적페이지)에 있는 정보를 크롤링하는 것은 할 수 있게 되었습니다.

하지만 웹페이지 중에 동적으로 작동하는 페이지

예를 들어 URL은 변하지 않고 웹페이지 내 달력형태의 날짜를 지정하여 "조회" 버튼을 누르면 그 날짜에 해당하는 정보만 뜨는 형식 같은 경우는

파이썬의 "from selenium import webdriver"를 사용하여 크롬 브라우져를 띄우고 항목별로 변수를 클릭하는 방식을 성공하긴 했는데, 혹시 이런 방법 말고 바로 웹서버에 요청해서 데이터를 받아오는 방법이 있는지 문의드립니다.

현재방식 : 크롬 브라우져 실행 -> selenium으로 클릭 명령 -> 페이지 로딩 -> 페이지 데이터 읽어오기

하고싶은 방식 : 변수를 웹서버에 바로 요청 -> 데이터 읽어오기

이 부분을 책이나 구글을 찾아보고 싶은데 "파이썬, 동적페이지, 크롤링"으로 검색하면 위에 나온 selenium을 활용한 방법만 나오고 그 이상은 나오지 않습니다.

위와 같은 방식으로 만들기 위해서 뭐라고 검색하면 좋을까요? 혹시 책을 봐야 한다면 어느 부분을 보면 되는지 도움이 될만한 부분이나 책 제목을 알려주시면 스스로 찾아보겠습니다!

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 구체적인 크롤링대상 페이지를 알려주시면 답변이 좀더 수월할 것 같습니다. 엽토군 2018.8.27 11:20

1 답변

  • 문제는 1가지 입니다.

    javascript 를 어떻해 실행해서 결과를 받을 것인가?

    이 문제 때문에 비효율적으로 selenium 을 사용하여 무거운 브라우져를 직접 핸들링 하는 겁니다.

    물론 단순히 GET/POST 변수만 변경되는 수준이면 쉬운 문제입니다. 그런데 요새 웹 app 들이 그렇지가 않습니다. 동적으로 json을 받아서 javascript 상에서 객체를 핸들링하고 그 결과를 이용하여 ajax로 서버측 호출을 하는 형식입니다.

    여기서 문제가 바로 javascript 작업을 해줘야 하는데 python 으로는 할 수 없는 작업이라는 겁니다.

    물론 방법은 있습니다. SPIDER MONKEY 같은 javascript 엔진을 사용하여 javascript 를 수행하는 겁니다. 물론 이것은 말 그대로 엔진이지 브라우져가 아니기 때문에 DOM 같은 것은 없습니다.

    시도를 해보고자 한다면

    https://github.com/doloopwhile/PyExecJS

    상기의 프로젝트를 참고해보세요.

    • 네 파이썬 기초 책 하나 읽고 단순한 크롤링 정도는 할 수 있게 된 수준이라 말씀하신 부분을 100% 이해는 못했지만 일단 Javascript와 파이썬 언어의 차이로 제가 원하는대로 파이썬으로 javascript로 된 페이지의 정보를 직접 불러올 수 없다는 말씀인걸로 이해했습니다. 도움 주신 내용을 천천히 참고해 보겠습니다. 답변 주셔서 감사합니다. 알 수 없는 사용자 2018.8.28 14:37

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

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

(ಠ_ಠ)
(ಠ‿ಠ)