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

webpage parsing인데 무조건 EOFException이 납니다. ㅠㅠ

0 추천
안녕하세요,

XE기반 웹사이트를 파싱해서 네이티브 App을 만드려고 하는데요,

XE 게시판을 html로받아와서 parsing하려고 하는데 잘 안되네요..

Jsoup, Jericho Parser 등 다 써봐도 계속 같은 아래와 같이 EOFException 에러만 나네요 ㅠㅠ

파싱하려는 사이트는 아래와 같이 XE기반의 사이트입니다.(예시주소입니다~)

http://www.seoularirangfestival.com/index.php?mid=arirangmedia&page=1

 

혹시 방법을 좀 아실분이 계실까요? ㅠㅠ

#코드1

public final static String AGENT_MOBIEL = "Dalvik/1.6.0 (Linux; U; Android 4.1.1; Google Galaxy Nexus - 4.1.1 - API 16 - 720x1280 Build/JRO03S)";

Document doc = Jsoup.connect(url).userAgent(AGENT_MOBIEL).get();
 

구글링했더니 charset을 넣으라고해서, UTF-8 로도 해봤지만 마찬가지로 에러가 납니다..ㅠㅠㅠㅠㅠㅠ

#코드2
Document doc = Jsoup.parse( new URL( url ).openStream( ), "UTF-8", url );    // 두 번째 방법

 

06-20 23:54:54.147 W 14280    14300    System.err:                                  java.io.EOFException
06-20 23:54:54.147 W 14280    14300    System.err:                                      at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:169)
06-20 23:54:54.157 W 14280    14300    System.err:                                      at java.util.zip.GZIPInputStream.read(GZIPInputStream.java:163)
06-20 23:54:54.157 W 14280    14300    System.err:                                      at java.io.InputStreamReader.read(InputStreamReader.java:233)
06-20 23:54:54.157 W 14280    14300    System.err:                                      at net.htmlparser.jericho.Util.getString(Util.java:56)
06-20 23:54:54.157 W 14280    14300    System.err:                                      at net.htmlparser.jericho.Source.<init>(Source.java:132)
06-20 23:54:54.167 W 14280    14300    System.err:                                      at net.htmlparser.jericho.Source.<init>(Source.java:174)
06-20 23:54:54.167 W 14280    14300    System.err:                                      at com.mpark.community.Fragment_ArticleList$JsoupAsyncTask.doInBackground(Fragment_ArticleList.java:403)
06-20 23:54:54.167 W 14280    14300    System.err:                                      at com.mpark.community.Fragment_ArticleList$JsoupAsyncTask.doInBackground(Fragment_ArticleList.java:370)
06-20 23:54:54.167 W 14280    14300    System.err:                                      at android.os.AsyncTask$2.call(AsyncTask.java:288)
06-20 23:54:54.167 W 14280    14300    System.err:                                      at java.util.concurrent.FutureTask.run(FutureTask.java:237)
06-20 23:54:54.167 W 14280    14300    System.err:                                      at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
06-20 23:54:54.177 W 14280    14300    System.err:                                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
06-20 23:54:54.177 W 14280    14300    System.err:                                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
06-20 23:54:54.177 W 14280    14300    System.err:                                      at java.lang.Thread.run(Thread.java:841)
한드로이등 (810 포인트) 님이 2017년 6월 20일 질문

1개의 답변

0 추천
1. 받아온 html 내용을 확인해보세요. 브라우저로 접속할 때와 앱에서 접속할 때가 다를 수 있습니다.

2. 인코딩은 아무렇게나 넣는다고 동작하는 것이 아닙니다. 해당 html의 인코딩을 넣어야 합니다.
익명사용자 님이 2017년 6월 21일 답변
빠른답변 감사합니다. 답변을 계속 기다리고 있었습니다.ㅠㅠ
1. 이미 jsoup.connect() 에서 exception처리되었는데 받아온 html내용을 볼 수 있나요? . catch문에서 그냥 doc내용 읽어보면될까요?
2. 해당 website의 인코딩 (utf-8)을 넣어봤는데, 다른 방법이 있을까요?
HttpURLConnection을 사용해서 해당 페이지를 받아보세요.
내용을 받아오지 못한다면
1. URL이 잘못되었거나
2. 해당 사이트가 브라우저 이외의 접근을 막는 것으로 보입니다.

2번 경우라면 페이지를 가져올 때 user-agent를 브라우저인 것 처럼 설정하는 방식으로 우회가 가능할 수도 있습니다.
...