确定两周后我承认失败,并且正在使用一种解决方法,此时对我很有帮助。
问题:
将HTMLUnit移植到Android(或者至少具有我的专业水平)太困难。我相信它是一个有价值的项目(对于有经验的java程序员来说并不那么耗时)。我通过电子邮件向HTMLUnit发送电子邮件,他们评论说他们没有关注端口或将涉及哪些工作,但建议任何想从这个项目开始的人都应该发送一条消息到他们的邮件列表中,让更多的开发人员参与(http://htmlunit.sourceforge.net/mail-lists.html) 。
解决方法:
我使用android内置的WebView并覆盖了Webview类的onPageFinished方法,以便在页面完全加载后注入抓取所有html的Javascript。 Webview也可以用来调用进一步的javascript动作,单击按钮,填写表单等。
代码:
webView.getSettings().setJavaScriptEnabled(true);
MyJavaScriptInterface jInterface = new MyJavaScriptInterface(context);
webView.addJavascriptInterface(jInterface, "HtmlViewer");
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
//Load HTML
webView.loadUrl("javascript:window.HtmlViewer.showHTML
('
'+document.getElementsByTagName('html')[0].innerHTML+'');");}
webView.loadUrl(StartURL);
ParseHtml(jInterface.html);
public class MyJavaScriptInterface {
private Context ctx;
public String html;
MyJavaScriptInterface(Context ctx) {
this.ctx = ctx;
}
@JavascriptInterface
public void showHTML(String _html) {
html = _html;
}
}