2013-10-07 3 views
1

HTML 테이블에서 URL을 긁어 내려고 할 때마다 URL이 아닌 HREF 제목 데이터가 나옵니다. 어떻게 해결할 수 있습니까/피할 수 있습니까? ?안드로이드/jsoup를 통해 URL 형식의 데이터 스크랩

<table class="datagrid"> 
     <tr> 
      <th>Number</th> 
      <th>Name</th> 
      <th>Sex</th> 
      <th>Location</th> 
     </tr> 

      <tr> 
       <td><a href="redirector.cfm?ID=93bd5121-7a3b-4a56-a576-f432e542047a&page=1&&amp;lname=&amp;fname=" title="501207593">501207593&nbsp;</a></td> 
       <td>AARON, JUSTIN COLBY&nbsp;</td> 
       <td>M&nbsp;</td> 
       <td>Facility 1</td> 
      </tr> 

      <tr> 
       <td><a href="redirector.cfm?ID=c5629a92-7113-487c-ba9b-1e62203ab08d&page=1&&amp;lname=&amp;fname=" title="501302750">501302750&nbsp;</a></td> 
       <td>AARONSON, CARY HOWARD&nbsp;</td> 
       <td>M&nbsp;</td> 
       <td>Facility 2</td> 
      </tr> 

      <tr> 
       <td><a href="redirector.cfm?ID=66d01768-5686-44eb-ac6a-16eb783f52d0&page=1&&amp;lname=&amp;fname=" title="501306284">501306284&nbsp;</a></td> 
       <td>ABBOTT, LAUREA &nbsp;</td> 
       <td>F&nbsp;</td> 
       <td>Facility 3</td> 
      </tr> 

SOURCE :

public class MainActivity extends Activity { 

    TextView tv; 
    String url = "http://google.com"; 
    String tr; 
    Document doc; 

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

     tv = (TextView) findViewById(R.id.TextView01); 
     new MyTask().execute(url); 
    } 

    private class MyTask extends AsyncTask<String, Void, String> { 

     ProgressDialog prog; 

     String title = ""; 

     @Override 
     protected void onPreExecute() { 
      prog = new ProgressDialog(MainActivity.this); 
      prog.setMessage("Loading...."); 
      prog.show(); 
     } 

     @Override 
     protected String doInBackground(String... params) { 
      try { 
       doc = Jsoup.connect(params[0]).get(); 
       Element tableElement = doc.select(".datagrid").first(); 

       Elements tableRows = tableElement.select("tr"); 
       for (Element row : tableRows) { 
        Elements cells = row.select("td"); 
        if (cells.size() > 0) { 
         title = cells.get(0).text() + "; " 
           + cells.get(1).text() + "; " 
           + cells.get(2).text() + "; " 
           + cells.get(3).text(); 
        } 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      return title; 
     } 

     @Override 
     protected void onPostExecute(String title) { 
      super.onPostExecute(title); 
      prog.dismiss(); 
      tv.setText(title); 
     } 
    } 
} 

CURRENT 결과 :

501,306,284; ABBOTT, LAUREA; F; 시설 3

원하는 결과 :

redirector.cfm ID = 66d01768-5686-44eb-ac6a-16eb783f52d0 & 페이지 1 = & & LNAME = & FNAME = "제목 ="501,306,284; ABBOTT, LAUREA; F; 시설 3 더 나은 아직

또는 ...

원하는 결과

대한 추가 정보를 원하시면 (< -URL) 여기를

클릭; ABBOTT, LAUREA; F; 시설 3

답변

1

당신은 단지 text 받고있는 것으로 보인다 :

cells.get(0).text() 

나는 이것이 당신이

cells.get(0).child(0).attr("href") 

확인이 link의 문서를 무엇을하려고 생각합니다.

+0

나는 다음과 같은 시도했지만 그것이 작동하지 않는 것 ... 제목 = cells.get (0) .attr ("HREF") + ";" \t \t + cells.get (0).cells.get (1) .text() + ";" ); – HelloMojo

+0

오, 왜냐하면 당신은 'TD'를 반복했기 때문입니다. 그리고 나서 당신은'TD '의 첫 아이를 물어야합니다. 업데이트 된 답변이 효과적입니다. –