2012-02-17 4 views
1

私はウェブページに接続して、ある情報と画像をページから取り出し、リストビューに配置しようとしています。 ページ全体のコンテンツを取得できますが、クラスや画像を表示するにはどうすればよいですか?Android:HTTPページを取得してスクラップする

私が今使っコード:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

import org.apache.http.HttpResponse; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class Main extends Activity { 
    /** Called when the activity is first created. */ 


    TextView text; 

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

     text = (TextView) findViewById(R.id.tvText); 

     HttpClient client = new DefaultHttpClient(); 
     HttpGet request = new HttpGet("http://www.wallbase.cc"); 
     try { 

     HttpResponse response = client.execute(request); 

     BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
     String line = ""; 
     while((line = rd.readLine()) != null){ 
      text.append(line); 
     } 

    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 



    } 
} 

答えて

2

HTMLページが有効なXML(XHTML)であれば、あなたがコンテンツを解析し、必要なデータだけを取得するためにXPathを使用することができますが、それは醜いHTMLあなたの場合それを修正する必要があります(高価なのは貴重なリソースを費やしてその仕事をする)か、コンテンツを歩きたいものを探してください。私は特定のイメージを得るためにいくつかの本当に悪いHTMLを解析しなければならなかったアンドロイドアプリを持っていました。私はcharでcharを歩いてイメージを探し、見つけたら、そのイメージオブジェクトを取得するために必要なURLを格納しましたループから切り離す

は、だからそれを行うには、あなたのコードでは、あなたが読んで使用します。代わりのreadLineの

rd.read(); 

をして、各文字を見てください。これは、条件の多くがコンテンツを検索すると、正規表現(など他/場合を意味する)かかりますが、それは

編集可能です

ああ、私はその後の画像を取得する方法を追加する必要があり、まさにそれにもかかわらず。ですから、このような何か画像のURLを持っていたら:

Bitmap retImg; 
... 

HttpGet get = new HttpGet(imgURLStr); 
HttpConnectionParams.setConnectionTimeout(get.getParams(), 
CONNECTION_TIMEOUT_MS); 
HttpConnectionParams.setSoTimeout(get.getParams(), 
SOCKET_TIMEOUT_MS); 
HttpResponse response; 
try { 
    response = httpClient.execute(get); 
} catch (ClientProtocolException e) { 
    Log.e(TAG, e.getMessage(), e); 
    throw new IOException("Invalid protocol."); 
} 

if (response.getStatusLine().getStatusCode() != 200) { 
    throw new IOException("Bad response: " + 
    response.getStatusLine().getStatusCode()); 
} 

HttpEntity entity = response.getEntity(); 
BufferedInputStream bis = new BufferedInputStream(entity.getContent(), 
8 * 1024); 
retImg = BitmapFactory.decodeStream(bis); 
bis.close(); 

これは、次のデバイス上のDBにキャッシュされ、GUIにロードされた返され、そのイメージ(retImg)、(からだった方法をそれはキャッシュから引き出されただけだった)

+0

ああ、ありがとう! –

関連する問題