2017-04-18 5 views
-1

나는 안드로이드 응용 프로그램을 작성하고 나는이 웹 페이지에서 테이블 데이터를 얻을 수 내 전화를 구성하는 방법을 알아 내려고 노력하고있어 함께 테이블을 추출 할 수있는 방법 : http://uk.soccerway.com/teams/scotland/saint-mirren-fc/1916/squad/내가 JSOUP

나는 JSOUP 웹 사이트에서 요리 책을 읽었습니다 그러나 내가 조금 붙어 있기 전에이 라이브러리를 사용하지 않았기 때문에. 나는 다음과 같은 것을 생각해 냈습니다 :

doc = Jsoup.connect("http://uk.soccerway.com/teams/scotland/saint-mirrenfc/1916/squad/").get(); 
Element squad = doc.select("div.squad-container").first(); Element 
Elements table = squad.select("table squad sortable"); 

나는 당신이 아직 플레이어 통계를 얻지 못한다고 볼 수 있습니다. 다음 단계는 새로운 요소 객체를 "테이블 스쿼드 정렬 가능"태그 안에있는 "tbody"태그를 가리 키도록하는 것입니다. 일단 테이블을 읽고 루프 내의 각 행을 읽으면 그 루프를 사용해야 할 것입니다.

경험이없는 사람에게는 불행히도 테이블 구조가 약간 복잡하므로 약간의 조언을 부탁드립니다!

답변

0

기본적으로 각 행에는 다음 선택자가 있습니다.
#page_team_1_block_team_squad_3-table > tbody:nth-child(2) > tr:nth-child(X) 여기서 X은 행 번호 (1에서 시작)입니다.

String url = "http://uk.soccerway.com/teams/scotland/saint-mirren-fc/1916/squad/"; 
String userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0"; 
Document doc = null; 
try { 
    doc = Jsoup.connect(url) 
      .userAgent(userAgent) 
      .get(); 
} catch (IOException e1) { 
    // TODO Auto-generated catch block 
    e1.printStackTrace(); 
} 
int i = 1; 
Elements row; 
do { 
    row = doc.select("#page_team_1_block_team_squad_3-table > tbody:nth-hild(2) > tr:nth-child(" + i + ")"); 
    for (Element el : row) { 
     System.out.print(el.select(".shirtnumber").text() + " "); 
     System.out.println(el.select(".name").text()); 
     i++; 
    } 
} while (row != null); 

이 각 선수의 번호와 이름을 인쇄합니다 :
한 가지 방법은 행을 반복하고 정보를 추출하는 것입니다. 행 수를 세지 않고 (변경 사항에 대해 프로그램을 계속 유지하고 싶지 않으므로) do...while 루프를 사용하도록 orefer합니다. 행이 존재할 때 (또는 비어 있지 않아도) 반복 할 것입니다.
출력 I 얻을 :

1 J. Langfield 21 B. R. 오브라이언 28 Willison의 2 S. 데 메트 3 G. 어바인 4 A. 웹스터 ...

브라우저의 개발자 도구를 사용하여 다른 열의 이름을 가져 와서 필요한 모든 정보를 얻으십시오.