2013-07-09 42 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可能是一个很好的开始,如果你只是想显示其他人在你的网页。