2017-11-10 21 views
-2

thisのようなURLがあるとします。今私は、アプリケーションのURLの内容を一目でわかりようにしようとしています。下の画像のように:enter image description hereウェブサイトのURLからコンテンツ(イメージ、タイトルなど)をロードする

次にどのように従うべきですか?私を助けてください。

+0

まず最初は、htmlページの内容を取得することです(もし望むならそれをダウンロードしてもよい)、次にそれを読者やカスタムリーダーに渡して、画像、ページのタイトル、段落がどこにあるかを見つけて識別し、それらの値を保存する。イメージをイメージビューにダウンロードし、htmlページから取得した値に基づいてテキストを設定します。おそらく最善の方法ではありませんが、それはできます:/ –

答えて

0

WebのURLからコンテンツをダウンロードする必要があります。次に、読み込んだページソースから目的の値を解析する必要があります。

ので、手順は基本的には、次のとおりです。 1.ロードHTML形式のWeb URL 2から今のhtml

からのWeb URLからHTMLをロードするためのステップを自分の価値観を解析します。

static String TAG = "WebRequest"; 
void getWebAsync(String urlString) { 
    AsyncHttpClient androidClient = new AsyncHttpClient(); 

    androidClient.get(urlString, new TextHttpResponseHandler() { 
     @Override 
     public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { 
      Log.e(TAG, "responseString: " + responseString); 
     } 

     @Override 
     public void onSuccess(int statusCode, Header[] headers, String responseToken) { 
      Log.e(TAG, "Client token: " + responseToken); 
      handleHtml(responseToken); 
     } 
    }); 
} 

受信したhtmlソースを処理する必要があります。ここで

void handleHtml(String htmlCode) { 
    WebModel webModel = extractAllText(htmlCode); 

    Log.e("PARSED_MODEL", "Model: " + webModel.toString()); 

    if (webModel.getTilte() != null) { 
     titleTV.setText(webModel.getTilte()); 
    } 

    if (webModel.getMainIamgeURL() != null) { 
     Picasso.with(this) 
       .load(webModel.getMainIamgeURL()) 
       .error(R.mipmap.ic_launcher) 
       .into(imageView); 

    } else { 
     imageView.setImageResource(R.mipmap.ic_launcher); 
    } 
} 

public WebModel extractAllText(String htmlText){ 
    Source source = new Source(htmlText); 
    String strData = ""; 

    WebModel webModel = new WebModel(); 

    List<Element> elements; 
    elements = source.getAllElements("title"); 

    String title = elements.get(0).getContent().toString(); 
    webModel.setTilte(title); 

    elements = source.getAllElements("meta"); 
    for(Element element : elements) 
    { 
     final String id = element.getAttributeValue("property"); // Get Attribute 'id' 
     if(id != null && id.equals("og:image")){ 
      strData = element.getAttributeValue("content"); 
      webModel.setMainIamgeURL(strData); 
      break; 
     } 
    } 
    return webModel; 
} 

public class WebModel { 
    String tilte; 
    String mainIamgeURL; 

    public String getTilte() { 
     return tilte; 
    } 

    public String getMainIamgeURL() { 
     return mainIamgeURL; 
    } 

    public void setTilte(String tilte) { 
     this.tilte = tilte; 
    } 

    public void setMainIamgeURL(String mainIamgeURL) { 
     this.mainIamgeURL = mainIamgeURL; 
    } 
} 

2つのライブラリが使用されています: 1. jericho-html-3.4.jar 2. com.loopj.android:android-async-http:1.4.9

最後に、あなたの結果は次のようになります:enter image description here

関連する問題