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

안드로이드 jsoup을 이용한 웹 크롤링 질문

0 추천
public class MainActivity extends AppCompatActivity {

    private String htmlPageUrl = "url"; //파싱할 홈페이지의 URL주소
    private TextView textviewHtmlDocument;
    private String htmlContentInStringFormat="";

    int cnt=0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textviewHtmlDocument = (TextView)findViewById(R.id.textView);
        textviewHtmlDocument.setMovementMethod(new ScrollingMovementMethod()); //스크롤 가능한 텍스트뷰로 만들기

        Button htmlTitleButton = (Button)findViewById(R.id.button);
        htmlTitleButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println( (cnt+1) +"번째 파싱");
                JsoupAsyncTask jsoupAsyncTask = new JsoupAsyncTask();
                jsoupAsyncTask.execute();
                cnt++;
            }
        });
    }

    private class JsoupAsyncTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected Void doInBackground(Void... params) {
            try {

                Document doc = Jsoup.connect(htmlPageUrl).get();

                //테스트1
                Elements titles= doc.select("div.board-list div.inner_list");

                System.out.println("-------------------------------------------------------------");
                for(Element e: titles){
                    System.out.println("title: " + e.text());
                    htmlContentInStringFormat += e.text().trim() + "\n";
                }

                //테스트2
                titles= doc.select("td.td_article div.board-list div.inner_list");

                System.out.println("-------------------------------------------------------------");
                for(Element e: titles){
                    System.out.println("title: " + e.text());
                    htmlContentInStringFormat += e.text().trim() + "\n";
                }

                //테스트3
                titles= doc.select("div.board-list div.inner_list");

                System.out.println("-------------------------------------------------------------");
                for(Element e: titles){
                    System.out.println("title: " + e.text());
                    htmlContentInStringFormat += e.text().trim() + "\n";
                }
                System.out.println("-------------------------------------------------------------");

            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            textviewHtmlDocument.setText(htmlContentInStringFormat);
        }
    }
}

 

여기서 에러가 뜨는데 매개변수 문제인것 같습니다. 그런데 아무리 봐도 잘 모르겠습니다..

도움좀 주실분ㅠㅠ..

2019-02-10 16:02:42.520 10803-10826/com.example.crawling E/eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
2019-02-10 16:02:42.520 10803-10826/com.example.crawling E/eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
꿀개 (930 포인트) 님이 2월 10일 질문

2개의 답변

0 추천
 
채택된 답변
일단 로그캣 메시지 전체를 올려주셔야 할것 같구요.

doInBackground 함수 첫줄부터 디버깅해보세요.

htmlPageUrl이 정상적인 경로인지

doc이 널이 되지는 않는지

titles가 녈이 되는가 등등
rhaps20 (5,310 포인트) 님이 2월 10일 답변
꿀개님이 7월 22일 채택됨
0 추천

Default Activity not found Error while Launching activity 라면,

실행될 기본 Activity가 선언안되어 있을 때, 나옵니다.

soundcloud downloader

lewisbrown (140 포인트) 님이 5월 17일 답변
...