Javascript WebView爬虫根据页面结果导航到url

Javascript WebView爬虫根据页面结果导航到url,javascript,android,web-scraping,android-webview,Javascript,Android,Web Scraping,Android Webview,我正试图根据所描述的需求构建一个web爬虫程序,我认为WebView将是实现这一点的最合适的方式 当我需要访问的下一个URL基于当前页面的HTML内容时,问题似乎就出现了。 我正在使用view.evaluateJavascript获取当前页面HTML并解析onReceiveValue中的URL部分,但是由于onReceiveValue无法访问该视图,因此我无法导航到URL 此外,在onPageFinished中使用loadUrl也不起作用,因为它甚至在检索HTML内容之前就已经完成了,因此导航到

我正试图根据所描述的需求构建一个web爬虫程序,我认为WebView将是实现这一点的最合适的方式

当我需要访问的下一个URL基于当前页面的HTML内容时,问题似乎就出现了。
我正在使用view.evaluateJavascript获取当前页面HTML并解析onReceiveValue中的URL部分,但是由于onReceiveValue无法访问该视图,因此我无法导航到URL

此外,在onPageFinished中使用loadUrl也不起作用,因为它甚至在检索HTML内容之前就已经完成了,因此导航到具有空值的页面

WebView myWebView=新的WebView(此);
setContentView(myWebView);
myWebView.getSettings().setJavaScriptEnabled(true);
MyJavaScriptInterface jInterface=新的MyJavaScriptInterface(此);
addJavascriptInterface(jInterface,“HTMLOUT”);
myWebView.setWebViewClient(新的WebViewClient(){
@凌驾
公共void onPageFinished(WebView视图,字符串url){
super.onPageFinished(视图、url);
如果(url.equals)(“http://url.com")) {
最终字符串[]版本字符串={
无效的
};
view.evaluateJavascript(((function(){return window.document.body.outerHTML})();”,
新值回调(){
@凌驾
公共void onReceiveValue(字符串html){
字符串结果=removeUTFCharacters(html).toString();
匹配器m=r.Matcher(结果);
versionString[0]=m.group(1);
}
});
String getFullUrl=String.format(“https://url.com/getData?v=%s,versionString[0]);
view.loadUrl(getFullUrl);
}
}
});
myWebView.loadUrl(“http://url.com");

从onReceiveValue调用您的url

 myWebView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            if (url.contains("https://www.google.com")) {
                final String[] versionString = {
                        null
                };
                view.evaluateJavascript("(function(){return window.document.body.outerHTML})();",
                        new ValueCallback< String >() {
                            @Override
                            public void onReceiveValue(String html) {

                                String getFullUrl = String.format("https://cchat.in", versionString[0]);
                                view.loadUrl(getFullUrl);
                            }
                        });

            }
        }
    });
    myWebView.loadUrl("https://www.google.com");
myWebView.setWebViewClient(新的WebViewClient(){
@凌驾
公共void onPageFinished(WebView视图,字符串url){
super.onPageFinished(视图、url);
if(url.contains()https://www.google.com")) {
最终字符串[]版本字符串={
无效的
};
view.evaluateJavascript(((function(){return window.document.body.outerHTML})();”,
新值回调(){
@凌驾
公共void onReceiveValue(字符串html){
String getFullUrl=String.format(“https://cchat.in,versionString[0]);
view.loadUrl(getFullUrl);
}
});
}
}
});
myWebView.loadUrl(“https://www.google.com");
我用2个网站来演示。我可以在接收值上调用第二个URL


您可以试试这个。

为什么
onReceiveValue
不能访问该视图?您是对的,它可以