Android WebView HTML Quelltext auslesen?

bruce85

Bekanntes Mitglied
Hallo nochmal,
ich hab ein kleines Problem mit WebView und zwar versuche ich den Quelltext auszulesen, das funktioniert ja auch, nur erhalte ich nicht den kompletten HTML Quelltext.

Wenn ich am PC über den Browser mit "Rechtsklick->Seiten-Quelltext anzeigen" gehe, dann erhalte ich auch nicht alle Daten.
Wenn ich aber mit "Rechtsklick->Element untersuchen" gehe, dann sind die Daten zusehen, wenn ich die einzelne Div Container aufklappe.

Wie kann ich alle Elemente von WebView in String speichern?

Ich hab das so versucht:
Code:
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
	myWebView = (WebView) findViewById(R.id.webView1);
        myWebView.getSettings().setJavaScriptEnabled(true);
        myWebView.getSettings().setLoadWithOverviewMode(true);
         
        myWebView.getSettings().setUseWideViewPort(true);
         
        myWebView.setWebViewClient(new MyWebViewClient());
        myWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
        

        myWebView.loadUrl("https://test.de/");
	    
        myWebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return false;
            }
            
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                
            }

            @Override
            public void onPageFinished(WebView view, String url) {
    myWebView.loadUrl("javascript:window.Android.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
            }
        });
        

        
        new UrlDownload().execute();
    }

    public class JavaScriptInterface {
        Context mContext;

        JavaScriptInterface(Context c) {
            mContext = c;
        }
        @JavascriptInterface
        public void showHTML(String html) {
            System.out.println("HTML Test: "+html);
        }
    }

Das funktioniert ja soweit, nur erhalte ich nicht den kompletten Quelltext.
Kann man das Problem irgendwie lösen?

Ich danke euch schonmal für die Hilfe.

MfG
 

Tobse

Top Contributor
Wenn ich am PC über den Browser mit "Rechtsklick->Seiten-Quelltext anzeigen" gehe, dann erhalte ich auch nicht alle Daten.
Was sind denn "alle Daten?"


Wenn ich aber mit "Rechtsklick->Element untersuchen" gehe, dann sind die Daten zusehen, wenn ich die einzelne Div Container aufklappe.
Der HTML-Quelltext ist das, was der Server beim request an die URL zurückgibt. CSS und JavaScript gehören da nicht dazu, das sind separate Dateien auf dem Webserver. Sie gehören einfach nicht zum HTML-Quellcode.

Aber im allgemeinen:
Ich habe noch nicht verstanden, was du erreichen willst und was nicht funktioniert.
 
Zuletzt bearbeitet:

bruce85

Bekanntes Mitglied
Danke erstmal.

Das Problem ist, das ich nicht den kompletten HTML Quelltext zurückbekomme.
Ich möchte einfach den gesamten HTML Inhalt von WebView in einem String speichern.

Wie könnte ich das Problem lösen?

MfG
 

Tobse

Top Contributor

bruce85

Bekanntes Mitglied
Ich habe mir eine App geschrieben für eigene Zwecke und möchte mir ein Paar Texte, die in WebView angezeigt wird, auslesen und in einem String speichern.
Leider sind viele Texte nicht im HTML Quelltext vorhanden, diese in WebView angezeigt sind.
Woran könnte das denn liegen?

Gruss
 

Tobse

Top Contributor
Leider sind viele Texte nicht im HTML Quelltext vorhanden, diese in WebView angezeigt sind.
nicht in dem HTML-Quelltext vorhanden, der dir vom Web-View zurückgegeben wird oder nicht in dem Quelltext vorhanden, den dir dein Browser anzeigt? Wenn es nämlich tatsächlich so ist, dass die WebView den puren HTML-Code "beschneidet" (was ich persönlich für sehr unwahrscheinlich halte) dann musst du den HTTP-Request an den Server selbst schicken (Android bringt da bestimmt ein paar Klassen mit).
Wenn die Text auch nicht in dem Quelltext sind, den dir dein Browser anzeigt dann werden sie per JavaScript nachgeladen. In diesem Fall ist deine einzige Chance, herauszufinden wie diese Texte nachgeladen werden und das dann in deiner App selbst zu machen.
 

bruce85

Bekanntes Mitglied
Die Menuleisten sind sichtbar im Quelltext, aber nicht das, was darunter ist.
Naja, ich kenne mich mit JavaScript nicht so gut aus und weiss nicht, wie ich das ambesten lösen kann, wenn es überhaupt möglich ist.

Ich danke Dir trotzdem für die Hilfe.

Edit: Ich hab das Problem jetzt so gelöst:
Code:
myWebView.loadUrl("javascript:window.Android.showHTML('<head>'+document.getElementById('*******').innerHTML+'</head>');");

Nun funktioniert es und vielen Dank für die antworten.

Gruss
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben