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

html 파싱(jericho)좀 도와주세요 ㅠ

0 추천

제가 네이버영화페이지에서 영화순위를 파싱할려고하는데요..ㅠ

초보라서 구글에서 예제보고 이해하면서 변경시킬려고 노력하는데 ㅠ

도무지 왜 안받아오는질 모르겠네요...

아무리 봐도 다 맞는데

코드에서나 실행시켰을때 오류없이 잘돌아가는데,

문제는 받아서 뿌려주는 값이 NULL값입니다....

제가봤을땐 데이터를 못가지고 오는거 같은데..

제리코 라이브러리 다 추가했구요..

메니페스트에도 권한 다 넣어줬구요..ㅠㅠ

머가 문제일까요...

밑에코드에 euc-kr도 해봤구요,

if로 null값 체크했는데 역시나 null 이더군요 ㅠㅠ

도와주세요!ㅎ

package com.kygmovie.boxoffice;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

import net.htmlparser.jericho.Element;
import net.htmlparser.jericho.HTMLElementName;
import net.htmlparser.jericho.Source;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;



public class MainActivity extends AppCompatActivity {

    TextView resultview;
    String con;



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


        String url = "http://movie.naver.com/movie/sdb/rank/rboxoffice.nhn?nation=kor";
        resultview = (TextView) findViewById(R.id.txt1);

        if (getHtmltoText(url)!= null){
            resultview.setText("no null");
        }else{
            resultview.setText("null이네");
        }
        //resultview.setText(getHtmltoText(url));
        //resultview.setText(con);



        //parse();
    }

    public String getHtmltoText(String sourceUrlString) {

        Source source = null;
        String content = null;

        try {
            URL sUrl = new URL(sourceUrlString);
            InputStream is = sUrl.openStream();
            source = new Source(new InputStreamReader(is,"UTF-8"));

            Element tbody = (Element) source.getAllElements(HTMLElementName.TBODY).get(0);
            Element tr = (Element) tbody.getAllElements(HTMLElementName.TR).get(1);
            Element td = (Element) tr.getAllElements(HTMLElementName.TD).get(1);
            Element div = (Element) td.getAllElements(HTMLElementName.DIV).get(0);
            Element a = (Element) div.getAllElements(HTMLElementName.A).get(0);

            //source.fullSequentialParse();
            content=a.getTextExtractor().toString();
           

        }catch (Exception e){
            e.printStackTrace();
        }
        return content;

    }

}
익명사용자 님이 2015년 11월 22일 질문

1개의 답변

0 추천
 
채택된 답변
로그를 첨부해주세요.

로그를 읽으셨으면 왜 실행이 되지 않는지 알 수 있으셨을텐데요.

정황상 메인 쓰레드에서 네트워크 작업을 하기 때문에 안드로이드에서 아예 거부당한 것으로 보입니다

별도 쓰레드를 만들어서 파싱하는 메소드를 호출해보세요.
cc1232 (35,280 포인트) 님이 2015년 11월 23일 답변
...