힝구힝구
233
2021-06-23 16:31:19
2
113

jsoup 파싱 질문입니다. (비동기 데이터 처리)


-던- 주의


안녕하세요, 카카오톡 자동응답 봇, 메신저봇이라는 앱을 이용해서 특정 사이트 데이터를 크롤링 해오고 싶은데, 해당 앱에 크롤링 관련하여 제공되는 모듈은 jsoup 이라서 jsoup으로 해결해야만 합니다.




코드는 다음과 같이 짜놨습니다.

일단 대상 url 은 다음과 같습니다.

https://dunfaoff.com/SearchResult.df?server=prey&characterid=e70f011526554a80b3cc006da288539f


var dunfaoffUrl = "https://dunfaoff.com/SearchResult.df?server=" + serverName + "&characterid=" + charId;
data = org.jsoup.Jsoup.connect(dunfaoffUrl).ignoreContentType(true).get();


이렇게 넘어온 데이터에서 holyBuffTable 이라는 친구를 가져오고 싶은데..


var temp = data.select(".holyBuffTable");



결과가 이렇게 나옵니다. 그런데 이게 끝이아니라 실제 데이터는 이렇게 많거든요,


이중 제일 밑에 있는  "버프력" 이라는 값을 얻고자합니다.


buffRows 하위에 있는 친구들이 전부 안나오고 있습니다. 아무래도 비동기로 후처리 하는거같은데, 관련해서 크롬 개발자 도구를 통해 뜯어본결과..




이 친구를 호출해서 뭔가 계산을 한 뒤에 html로 그려주는 것 같습니다..

그래서 그런데, 이 URL에 대고 URI 형식으로 직접적으로 호출할 수 있는 방법은 없는걸까요? 파라미터가 뭐가 필요한지도 모르겠고..

비동기 처리 할때마다 막혀서 너무 답답한데 정말 고수분들의 도움이 간절합니다...

미쳐버릴것같아요 ㅠㅠ 정말 속시원하게 해결해주시는 분 계시면 커피 깊티라도 사례하겠습니다.. 감사합니다








0
  • 답변 2

  • RWB
    1k
    2021-06-23 17:36:31

    이런식의 후처리 렌더링은 일반적인 비동기 처리로 가져오기 어렵습니다. HTML 렌더링 이후 브라우저의 JS가 비동기 통신을 통해 데이터를 받아서 그려줘야 하는데, 프로그래밍으로 해당 URL을 요청해봤자 렌더링되지 않은 날것의 HTML만 나옵니다.


    보통 이 경우 실제 데이터를 반환하는 URL을 통해 파싱하는데, 여기선 JS단에 뭔가 파라미터를 넘겨서 클라이언트에서 처리하는 것 같네요.


    이렇게 반드시 렌더링된 페이지의 크롤링이 필요할 경우, 셀레니움을 쓰면 현제 보이는 페이지를 크롤링할 수 있으니 관련 내용을 확인해보세요.

  • 힝구힝구
    233
    2021-06-23 17:57:03

    RWB


    답변감사합니다만, 앞서 언급했듯이 개발환경이 특정 앱이라 셀레니움같은 모듈 설치가 안되서요...

    별도로 서버를 파고 그 서버에서 돌려주는것만이 답인걸까요..


  • 로그인을 하시면 답변을 등록할 수 있습니다.