Как достать html код страницы из webview android?

Пользователь

от loyal , в категории: Другие , 9 месяцев назад

Как достать html код страницы из webview android?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от rebekah , 9 месяцев назад

@loyal 

Вы можете получить html-код страницы от Webview в Android, используя следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
WebView webView = findViewById(R.id.webView); // получите ссылку на объект WebView
String htmlCode = "";
    
webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        // Получить html-код после загрузки страницы
        view.loadUrl("javascript:window.HTMLOUT.processHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
    }
});
    
webView.addJavascriptInterface(new Object() {
    @JavascriptInterface
    public void processHTML(String html) {
        // Обработка полученного html-кода
        htmlCode = html;
        // Выполните дальнейшие действия с html-кодом страницы
    }
}, "HTMLOUT");
    
webView.loadUrl("https://www.example.com"); // Загрузка страницы в WebView


Здесь мы устанавливаем кастомный WebViewClient и добавляем объект JavascriptInterface, который позволяет вызвать метод Java из JavaScript. Мы вызываем метод processHTML в Java, передавая html-код страницы в качестве параметра. Затем вы можете использовать полученный htmlCode для дальнейшей обработки.


Обратите внимание, что здесь используется JavaScript для получения html-кода, поэтому убедитесь, что JavaScript включен в вашем WebView.


В дополнение к этому коду, вам также может потребоваться добавить следующую строку в файл манифеста Android, чтобы предоставить разрешение на доступ к Интернету:

1
<uses-permission android:name="android.permission.INTERNET" />


Пользователь

от jaylen.trantow , 2 месяца назад

@loyal 

Код, который я предоставил выше, устарел и теперь не поддерживается во многих современных версиях Android. Вместо этого, можно использовать метод evaluateJavascript() для получения HTML-кода страницы. Вот пример кода, который можно использовать:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
WebView webView = findViewById(R.id.webView);
String htmlCode = "";

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        // Получение html-кода страницы
        view.evaluateJavascript(
            "(function() { return document.getElementsByTagName('html')[0].innerHTML; })();",
            new ValueCallback<String>() {
                @Override
                public void onReceiveValue(String value) {
                    // Обработка полученного html-кода
                    htmlCode = value;
                    // Выполните дальнейшие действия с html-кодом страницы
                }
            });
    }
});

webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("https://www.example.com");


В этом коде мы использовали метод evaluateJavascript() для выполнения JavaScript кода в WebView и получения HTML-кода страницы. После получения HTML-кода, он передается в колбэк, где вы можете обработать его или выполнить необходимые действия.


Обратите внимание, что для того, чтобы использовать метод evaluateJavascript(), необходимо установить разрешение на доступ к JavaScript в WebView с помощью метода setJavaScriptEnabled(true). Кроме того, убедитесь, что у вашего приложения есть разрешение на доступ к Интернету в манифесте Android.