0

URL を stringbuilder に入れることができないという問題が発生しています。ここで達成しようとしているのは、ページの特定の部分を取得することです。コンテンツを取得しようとしているWebページは次のとおりです。

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

これは、WebView でのみ表示したい Web サイトの一部です。

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");
        }
}

私はすべてを試しましたが、ウェブページ全体がまだ表示されています。私は何を間違っていますか?それは間違っている何か他のものですか?どんな助けでも大歓迎です。

4

1 に答える 1

0

私はあなたのコードに少し混乱しています。ある種の Javascript トリックを使用して、必要なデータのみを解析しようとしているようです (間違っている場合は修正してください)。問題は、javascript が BROWSER-SIDE であるため、ページ スクレーパーで実行されていないことです。ここにはいくつかのオプションがあります

1) 実際には、情報の一部を解析してサイトに再表示したいようです。次のような方法でページの HTML をフェッチすることを検討しましたか?

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

次に、jsoupのようなものを使用して、必要なものだけを解析しますか?

2) ここで WebView仕様のサイズとスケールをある程度制御できます。setPadding setScaleX/Y自分のページに他の人のページを表示したいだけの場合は、見ることから始めるのがおそらく良いでしょう。

于 2013-07-09T17:57:45.857 に答える