2014-06-20 107 views
0

我可以解析href URL只是文檔以下內容:解析jsoup網址的Android

Document doc = Jsoup.connect("http://jsoup.org").get(); 

Element link = doc.select("a").first(); 
String relHref = link.attr("href"); // == "/" 
String absHref = link.attr("abs:href"); // "http://jsoup.org/" 

,但我嘗試提取CSS的鏈接網址本網頁:http://multiplayer.it/notizie/133685-assassins-creed-unity-ecco-come-assassins-creed-unity-sfrutta-lhardware-di-nuova-generazione.html

我需要採取的鏈接圖像橫幅。該ID是:id="content_heading"但圖像是由CSS加載。

<div id="content_heading" style="background: url(http://images.multiplayer.it/thumbs/images/2014/06/10/assassins_creed_unity_jpg_1600x0_upscale_q85.jpg) center center; background-size: cover;"> 

如何提取網址?這是Asynktask

private class ContentViewImgUrl extends AsyncTask<String,String,String> { 

@Override 
protected void onPreExecute() 
{ 

} 

@Override 
protected String doInBackground(String... params) { 


try { 
final Document doc = Jsoup.connect(URL).timeout(30000).get(); 
runOnUiThread(new Runnable() { 
    @Override 
    public void run() { 
    Element rootElement = doc.body().getElementById("top_ads_container"); 
    Elements elements = rootElement.getElementsByTag("header"); 
    for(Element element : elements){ 

    imgUrlPost = element.select("div.content_heading").text(); 



    } 
} 
}); 


} catch (Exception e) { 

Log.e("ESEMPIO", "ERROR"); 
} 
return null; // MODIFIED HERE 
} 

@Override 
protected void onPostExecute(String result) 
{ 
    Toast.makeText(SingleActivity.this, "url "+ imgUrlPost, Toast.LENGTH_SHORT).show(); 
} 

} 

的敬酒不工作。它僅返回Url而已。 感謝

UDPATE:

private class ContentViewImgUrl extends AsyncTask<Void,Void,Void> { 

    final Pattern pattern = Pattern.compile("url\\((.+?)\\)"); 

    @Override 
    protected void onPreExecute() {} 

    @Override 
    protected String doInBackground(Void... params) { 

     try { 
      final Document doc = Jsoup.connect(URL).timeout(30000).get(); 

      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        String url = doc.getElementById("content_heading").attr("style").toString(); 
        Matcher matcher = pattern.matcher(url); 
        matcher.find(); 
        System.out.println(matcher.group(1)); 
       } 
      }); 
      urlnew = new URL(matcher.group(1)); 
      postBitmap = BitmapFactory.decodeStream(urlnew.openConnection().getInputStream()); 
     } catch (Exception e) { 
      Log.e("ESEMPIO", "ERROR"); 
     } 
     return null; // MODIFIED HERE 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     Toast.makeText(SingleActivity.this, "url "+ urlnew, Toast.LENGTH_SHORT).show(); 
     postImage = (ImageView) findViewById(R.id.postimage); 
     postImage.setImageBitmap(postBitmap); 
    } 
} 

其中urlnew我宣佈它作爲public URL urlnewpostBitmap爲位圖

第二UDPATE:

private class ContentViewImgUrl extends AsyncTask<Void,Void,Void> { 

     final Pattern pattern = Pattern.compile("url\\((.+?)\\)"); 

     @Override 
     protected void onPreExecute() {} 

     @Override 
     protected String doInBackground(Void... params) { 

      try { 
       final Document doc = Jsoup.connect(URL).timeout(30000).get(); 

       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         String url = doc.getElementById("content_heading").attr("style").toString(); 
         Matcher matcher = pattern.matcher(url); 
         if(matcher.find()){ 

         System.out.println(matcher.group(1)); 

         indirizzostringaimg = matcher.group(1); 
         imgloader = ImageLoader.getInstance(); 
         imgloader.init(ImageLoaderConfiguration.createDefault(getActivity())); 
         System.out.println(urlnew); 
         } else { 
         Toast.makeText(getActivity(), "Pic url error",     Toast.LENGTH_SHORT).show(); 
         } 
        } 
       }); 

      } catch (Exception e) { 
       Log.e("ESEMPIO", "ERROR"); 
      } 
      return null; // MODIFIED HERE 
     } 

     @Override 
     protected void onPostExecute(Void result) { 

      if(matcher.find()){ 
      DisplayImageOptions opt = new DisplayImageOptions.Builder() 
      .showStubImage(R.drawable.refresh) 
      .showImageForEmptyUri(R.drawable.refresh) 
      .cacheInMemory() 
      .imageScaleType(ImageScaleType.IN_SAMPLE_INT) 
      .cacheOnDisc() 
      .build(); 

      imgloader.displayImage(indirizzostringaimg, postimage_main, opt); 
     } else { 
      Toast.makeText(getActivity(), "Pic url error",     Toast.LENGTH_SHORT).show(); 
     } 
     } 
    } 
+0

在後臺線程不能創建祝賀通知 –

+0

是對不起,我錯了..反正它返回「空」現在我編輯的問題。可以提取該鏈接嗎? –

回答

1

這是一個完整的工作示例。獲取你感興趣的部分。

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 


public class Main { 

    public static void main(String[] args) { 
     String html = "<div id=\"content_heading\" style=\"background: url(http://images.multiplayer.it/thumbs/images/2014/06/10/assassins_creed_unity_jpg_1600x0_upscale_q85.jpg) center center; background-size: cover;\"></div>"; 
     final Pattern pattern = Pattern.compile("url\\((.+?)\\)"); 

     try { 
      Document doc = Jsoup.parse(html); 
      String url = doc.getElementById("content_heading").attr("style").toString(); 

      Matcher matcher = pattern.matcher(url); 
      matcher.find(); 
      System.out.println(matcher.group(1)); 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

更新

private class ContentViewImgUrl extends AsyncTask<String,String,String> { 

    final Pattern pattern = Pattern.compile("url\\((.+?)\\)"); 

    @Override 
    protected void onPreExecute() {} 

    @Override 
    protected String doInBackground(String... params) { 

     try { 
      final Document doc = Jsoup.connect(URL).timeout(30000).get(); 

      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        String url = doc.getElementById("content_heading").attr("style").toString(); 
        Matcher matcher = pattern.matcher(url); 
        matcher.find(); 
        System.out.println(matcher.group(1)); 
       } 
      }); 
     } catch (Exception e) { 
      Log.e("ESEMPIO", "ERROR"); 
     } 
     return null; // MODIFIED HERE 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     Toast.makeText(SingleActivity.this, "url "+ imgUrlPost, Toast.LENGTH_SHORT).show(); 
    } 
} 
+0

讓我們[在聊天中繼續討論](http://chat.stackoverflow.com/rooms/56199/discussion-between-alkis-and-end-game)。 – alkis