마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

숨겨진 페이지 파싱하는 방법

0 추천

요즘 페이지들 보면 스크롤해야 다음 데이터를 불러오는 페이지가많더라구요

그런데 그 데이터들을 전부 가져와서 뿌려주고 싶은데 어떻게 해야 하나요?

 

아래 페이지를 파싱했는데 딱 첫페이지에 보여주는 데이터밖에 파싱을 못하고 있습니다.

나머지는 스크롤을 내려서 마지막에 닿았을 때 불러오게 되는데요

이걸 같이 파싱하려면 어떤 방법으로 해야할까요?

브루스웨인 (8,580 포인트) 님이 2017년 3월 29일 질문

1개의 답변

0 추천
 
채택된 답변
숨겨진게 아니라 아작스처리한 것 같은데요.

해당부분 스크립트쪽을 보셔야 할 것 같네요
익명사용자 님이 2017년 3월 30일 답변
브루스웨인님이 2017년 4월 6일 채택됨
<a href="javascript:getList();" class="saleinfo_btn_more">더보기<span class="more_arrow"></span></a>

javascript:getList()
이걸로 가져오는거 같은데 getList()함수가 태그에 따로 있진 않았습니다.
그렇다면 저 class="saleinfo_btn_more" 를 사용해서 실행하도록 한다음 페이지를 긁어올 수 있나요?
아작스는 비동기 처리이고 버튼 눌렀을때 호출되는 함수에 인수가 없는 형태로 보아서는 함수 내부에서 해당 article의 갯수를 계산하여 인수를 던지는 것 같네요.
지금 형태로는 못씁니다.
getList()함수를 찾으세요
function getList() {
            isPreviousEventComplete = false;
            //oLoading.show();
            jQuery("#load_more").hide();
            jQuery("#con_loading").show();

            sAjaxUrl = "./cont/ajaxGetList.aspx";
            $Ajax(sAjaxUrl, {
                type: 'xhr',
                timeout: '30',
                ontimeout: function () {
                    alert('목록을 불러올 수 없습니다.\n잠시 후에 다시 이용해 주세요!');
                    //oLoading.hide();
                },
                onload: function (res) {
                    if (res.status() == 200) {
                        var resText = res.text();
                        if(iLastPage != 0) {
                            jQuery("#evtList").html(resText);
                            iPage = iLastPage;
                            iLastPage = 0;
                            pageRow = 10;

                            fnScrollExHandle(iLastSeq);
                        }
                        else if (iPage == 1) {
                            jQuery("#evtList").html(resText);
                        }
                        else {
                            jQuery("#evtList").html(jQuery("#evtList").html() + resText);
                        }
                        jQuery(".fittext1").fitText(0.2, { minFontSize: '12px', maxFontSize: '74px' });
                        iPage = iPage + 1;
                        if (TotalPage + 1 > iPage) {
                            //jQuery("#load_more").show();
                            isPreviousEventComplete = true;
                        }
                        else {
                            isListComplete = true;
                        }
                        jQuery("#con_loading").fadeOut();

                        
                    } else {
                        alert('목록을 불러올 수 없습니다.\n잠시 후에 다시 이용해 주세요.');
                    }
                    //oLoading.hide();
                }
            }).request({ mCode: mCode, rCode: rCode, tCode: tCode, iPage: iPage, pageRow: pageRow, Rnd006: Rnd006 });
        }
감사합니다. 찾아주신 함수를 발견했는데요
그렇다면 이 함수를 실행시킨 후의 url?을 불러오거나
 sAjaxUrl = "./cont/ajaxGetList.aspx"; 이 url을 사용하는건가요?
주소뒤에 붙여봤는데 불러와지진 않았습니다.
http://m.cgv.co.kr/WebApp/EventNotiV4/cont/ajaxGetList.aspx?mCode=004&logoIndex=0

잘 불러와 지는데요?!
요청항목에 페이지 값이 있으니 ipage 값에 불러올 숫자만 적용하면 되겠죠
아 그런가요. 그런데 제가 지금 잘 모르겠는 부분이 getList함수를 어떻게 가져와서 사용하고 ipage값을 넣고 하는지를 잘 모르겠어요.
첫 페이지 목록 파싱은 다 했는데 추가로 불러오는방법에 대한 접근조차 못하고 있습니다ㅠ
요청항목에 페이지값이 있다는게 어떤 파라미터를 말씀하시는건가요?
http://m.cgv.co.kr/WebApp/EventNotiV4/cont/ajaxGetList.aspx?mCode=004&logoIndex=0
위 주소가 실제 아작스에서 불러오는 컨텐츠 주소입니다
위의 getList는 받아온 오브젝트를 단순히 Html 상에 append 하고 있을뿐이니까
어싱태스크에서 for문 돌면서 파싱하면 됩니다
예를 들어
for(i=1;i<=10;i++){
    String url = "http://m.cgv.co.kr/WebApp/EventNotiV4/cont/ajaxGetList.aspx?    mCode=004&logoIndex=0&ipage="+i;

Aquery aq = Aquery();
q.ajax( url, map, String.class, new AjaxCallback<JSONObject>() {
   @Override
   public void callback( String url, String object, AjaxStatus status ) {
      if( object != null) {
         //파싱
      }
   }
} );
}
아 AQuery라는 라이브러리가 있군요 한번 해보곘습니다.감사합니다
저 ajax의 map은 무슨 역할을 하는거죠? 적용하기가 어렵네요 ㅠ
...