2014-04-20 8 views
0

JAVA (Android)가있는 웹 사이트에서 <div class="score">4.1</div> 값을 추출하고 싶습니다. 나는 Jsoup을 시도했는데 사용하기가 더 간단하지는 않지만 8 초 만에 값이 매우 느립니다. 사이트의 페이지 소스에 300,000 자의 문자가 있고이 <div>은 중간에있는 것을 알아야합니다. 하나의 데이터에 대한 스크랩 웹

심지어 HttpClient을 사용하고 가 발견 부분은 빨리 (3-4 초)으로 인 점수를 때까지 전체 문자열을 통해가는 StringBuilder로 소스를 받고.

대용량의 jar 파일이 필요하고 잠시 후 Eclipse가 항상 혼란스러워하면서 HtmlUnit을 시험해 볼 수 없었습니다.

더 빠른 방법이 있습니까?

답변

0

간단히 XMLhttpRequest를 보낸 다음 search() 함수를 사용하여 응답을 검색 할 수 있습니다. 나는 이것이 훨씬 더 빠를 것이라고 생각한다.

비슷한 질문 : Retrieving source code using XMLhttpRequest in javascript

은 단순히 같이 IndexOf 사용할 수 있습니다, 검색이 더 빠르게 만들려면 ([검색 따끔를], [시작 인덱스]) 그리고 그것은 매우 할 필요가 없습니다 (시작 인덱스를 지정 정확하면 검색 영역을 줄여야합니다.)

0

내가 한 일은 다음과 같습니다. 문제는 내가 웹 페이지를 한 줄에 하나씩 읽어 들여 StringBuilder에 붙이고 특정 부분을 검색했다는 것입니다. 그런 다음 스스로에게 물어 보았습니다. 왜 페이지를 한 줄씩 읽은 다음 서로 붙여야합니까? 대신 페이지를 ByteArray으로 읽고이를 String으로 변환했습니다. 긁는 시간은 1 초도되지 않았습니다!

try 
    { 
     InputStream is = new URL(url).openStream(); 
     outputDoc = new ByteArrayOutputStream(); 
     byte buf[]=new byte[1024]; 
     int len; 
     while((len=is.read(buf))>0) 
     { 
      outputDoc.write(buf,0, len); 
     } 
     outputDoc.close(); 
     } catch(Exception e) { e.printStackTrace(); } 

try { 
    page = new String(outputDoc.toByteArray(), "UTF-8"); 
     //here I used str.indexOf to find the part 

}