2012-01-20 6 views
1

私はAndroidプロジェクトで作業していますが、現在JSoupでアプリケーションのWebサイトからデータを抽出しています。JSoup - divの内容を抽出中にエラーが発生しました

私がターゲットとするウェブサイトはhereです。

メインの情報テキストを抽出したいと思います。そのdiv要素のXPathが

//div[@id='wikiAbstract']

ある

public class Main extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    TextView tv = (TextView) findViewById(R.id.textView1); 
    Document doc = null; 

    try { 
     doc = Jsoup.connect("http://www.last.fm/music/Bright+Eyes").get(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    Element divs = doc.select("div#wikiAbstract").first(); 
    tv.setText(divs.text()); 

}

は、しかし、私はNULLポインタ例外を取得しています次のように私の完全なコードです。私は他のウェブサイトやdivで同じコードをテストしており、完全に動作します。なぜこれが違うのか分かりません。

お手数ですが、事前に感謝の意を表します。

答えて

1

ああ、大丈夫ですので、hereのhtmlコンテンツは、last.fmウェブサイトのモバイル版から来ていたので、div idは異なっていました。これを発生する可能性がある人のため

は、あなたが完全なウェブサイトが要求されていることを確認するか、単にあなたがモバイルサイトから正しいのdiv idを取得することを確認するために、接続にUser-Agentリクエストヘッダを追加することができます

Document doc = Jsoup.connect(myURL) 
       .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0.1) Gecko/20100101 Firefox/8.0.1") 
       .get(); 
0

この完全なプログラム:(短縮)

public static void main(String[] args) throws IOException { 
    Document doc = Jsoup.connect("http://www.last.fm/music/Bright+Eyes").get(); 
    Element content = doc.select("div#wikiAbstract").first(); 
    System.out.println(content.text()); 
} 

出力:

ブライト・アイズは、主にアメリカの歌手、ギタリスト、 ソングライターコナー・オバーストからなるバンドです。ブライト・アイズも言うことです マルチプレイヤー/プロデューサーマイク・モジス、キーボード奏者ネイト ウォルコットと オマハ、ネブラスカ州、そして...

から主に描かれた協力者の回転ラインナップを...特徴のエラーは他の場所にあります。たぶんtextViewnullですか?

一般レッスンここでは、あなたが失敗していると思われる部分を抽出し、移動する前に疑いを確認することです。