2016-06-27 21 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''変数はヌルか空の '' 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を示すこのサンプルコードをご覧ください。

関連する問題