2016-06-27 4 views
0

웹 사이트 API가 아닌 Jsoup를 사용하여 웹 사이트에서 연습하고 정보를 얻으려고합니다. 내 코드에 오류가 없지만 텍스트 필드가 변경되지 않습니다. 그냥 빈 공간을 보여줍니다. 어떻게하면 웹 사이트에서 정보를 얻을 수 있습니까? 나는 나의 웹 사이트에 게시 할 수 있도록 메인 뉴스를 얻으려고하고있다.Jsoup를 사용하여 웹 사이트에서 데이터를 가져 오는 중입니까?

내 코드 : 문제는 여기에 거짓말

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.os.AsyncTask; 
import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.select.Elements; 
import java.io.IOException; 
import java.io.InputStream; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity { 

    Document document; 
    TextView text; 
    String ankosh; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     text = (TextView)findViewById(R.id.textView); 
     new Ankosh().execute(); 

    } 

    public class Ankosh extends AsyncTask<Void, Void, Void> { 

     private Exception exception; 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
     } 

     @Override 
     protected Void doInBackground(Void... params) { 
      try { 
       // Connect to the web site 
       document = Jsoup.connect("http://www.theguardian.com/us").get(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      return null; 
     } 
     @Override 
     protected void onPostExecute(Void feed) { 

      String ankosh = document.attr("href"); 
      text.setText(ankosh); 



     } 
    } 


} 
+1

실천은 좋지만 ToS를 위반할 가능성이 큽니다. 또한 도움이 필요하다면, 구문 분석 할 HTML의 정확한 부분을 지정해야합니다. 여기 사람들이 당신이 무엇을 찾고 있는지를 알아 내기 위해 사이트를 방문 할 것으로 기대할 수는 없습니다. – Filburt

+0

코드를 디버그하여 그 이유를 확인하십시오. 이 경우 html 문서의 루트 태그는''href''라는 속성을 갖지 않습니다. 즉,''ankosh'' 변수는 null이거나 빈''String''입니다. 중단 점을 사용하고 디버깅하는 방법을 배우십시오. – f1sh

답변

0

:

@Override 
protected void onPostExecute(Void feed) { 
    String ankosh = document.attr("href"); 
    text.setText(ankosh); 
} 

document 변수는 속성이없는이 href을했다. 이것이 ankosh 변수가 비어있는 이유입니다.

대신 다음을 시도하십시오. 문서의 첫 번째 div가 fc-item__content 클래스 인 경우).

Element mainNewsDiv = document.select("div.fc-container--rolled-up-hide.fc-container__body > div:nth-child(1) > ul > li > div > div > div.fc-item__content").first(); 

if (mainNewsDiv == null) { 
    // Main news not found... 
} else { 
    text.setText(mainNewsDiv.text()); 
} 

마지막 주, 당신은 문서를로드하는 Jsoup.connect을 피해야한다. 내부적으로, 그것은 느리게 악명 높은 URL 클래스를 사용합니다. 대신 Volley를 사용하십시오. use of Volley and Jsoup을 보여주는이 샘플 코드를 참조하십시오.

관련 문제