2013-07-09 38 views
0

我遇到了一個問題,我無法將網址放入stringbuilder中。我想在這裏完成的只是獲取頁面的特定部分。這裏是我試圖讓內容關閉的網頁:無法從網站獲取特定內容

http://www.google.com/finance/company_news?q=CURRENCY%3AUSD&ei=hYbQUcC3LJS80QHnDA

這裏是網站,我只想在我的WebView顯示的部分:

http://oi44.tinypic.com/2ilnhwi.jpg

這裏我的代碼:

public class WebClient extends WebViewClient { 

@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    view.loadUrl(url); 
    return true; 
} 
@Override 
public void onPageFinished(WebView view, String url) { 
    StringBuilder builder = new StringBuilder(""); 
    builder.append("javascript:document.getElementById('gb') .style.visibility= 'hidden';"); 
    builder.append("document.getElementById('gb') .style.display = 'none' ;"); 
    builder.append("document.getElementById('appbar').style.visibility= 'hidden';"); 
    builder.append("document.getElementById('appbar').style.display = 'none' ;"); 
    builder.append("document.getElementById('gf-nav').style.visibility= 'hidden';"); 
    builder.append("document.getElementById('gf-nav').style.display = 'none' ;"); 
    view.loadUrl(builder.toString()); 
} 
} 

private void AddListenerOnButton() { 
spinner = (Spinner) getView().findViewById(R.id.spinner); 
final WebView webView = (WebView) getView().findViewById(R.id.webView1); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.getSettings().setRenderPriority(RenderPriority.HIGH); 
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
webView.getSettings().setDatabaseEnabled(true); 
webView.getSettings().setDomStorageEnabled(true); 
webView.getSettings().setAppCacheEnabled(true); 
webView.getSettings().setBuiltInZoomControls(true); 

spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
     String text1 = spinner.getSelectedItem().toString().trim(); 
     WebClient wc = new WebClient(); 
     if (text1.equals("US Dollar - USD")) { 
      //webView.loadUrl("http://www.google.com/finance/company_news?q=CURRENCY%3AUSD&ei=hYbQUcC3LJS80QHnDA"); 
      wc.onPageFinished(webView, "http://www.google.com/finance/company_news?q=CURRENCY%3AUSD&ei=hYbQUcC3LJS80QHnDA"); 
      wc.shouldOverrideUrlLoading(webView, "http://www.google.com/finance/company_news?q=CURRENCY%3AUSD&ei=hYbQUcC3LJS80QHnDA"); 
     } 
} 

我已經嘗試了一切,但整個網頁仍然顯示。我究竟做錯了什麼?這是否是其他的錯誤?任何幫助將不勝感激。

+0

你的JavaScript執行了嗎? (用'alert()'測試它) 在網站加載完成之前,您的JavaScript代碼可能會被執行嗎? –

+0

我不明白你在說什麼。也許如果你把代碼放好,我會明白的。 – user2507301

+0

如果你添加了 'builder.append(「javascript:alert('Hello World');」);''在'StringBuilder builder = new StringBuilder(「」);' 之後會發生什麼?在你的WebView? –

回答

0

我有點困惑你的代碼。它看起來像你試圖使用某種Javascript技巧來解析只有你想要的數據(請糾正我,如果我錯了)。問題是javascript是BROWSER-SIDE,所以它沒有在你的頁面上運行。你有幾個選擇在這裏

1)它似乎是你真的想解析出一些信息,並重新顯示它在你的網站上。你有沒有考慮過的東西,如

url = new URL("http://www.your.www"); 
    br = new BufferedReader(new InputStreamReader(url.openStream())); 

然後使用類似jsoup只是解析你想要抓取的網頁HTML?

2)您可以控制WebView的尺寸和比例specs here。看看setPaddingsetScaleX/Y可能是一個很好的開始,如果你只是想顯示其他人在你的網頁。