Javascript WebView爬虫根据页面结果导航到url
我正试图根据所描述的需求构建一个web爬虫程序,我认为WebView将是实现这一点的最合适的方式 当我需要访问的下一个URL基于当前页面的HTML内容时,问题似乎就出现了。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内容之前就已经完成了,因此导航到
我正在使用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
不能访问该视图?您是对的,它可以