Pie*_*rre 28 java selenium android htmlunit web-scraping
我花了一天时间研究一个可以用来完成以下工作的库:
这是我没有成功的尝试:
我真的希望HtmlUnit工作,因为它似乎最适合我的解决方案.是否有任何方式或至少另一个我错过的图书馆适合我的需求?
我目前正在使用Android Studio 0.1.7,如果需要可以移动到Ellipse.
提前致谢!
Pie*_*rre 26
好吧,2周后我承认失败并正在使用一种对我来说很有用的解决方法.
问题:
将HTMLUnit移植到Android(或至少具有我的专业水平)是非常困难的.我确信这是一个有价值的项目(而且对于经验丰富的java程序员来说并不耗费时间).我通过电子邮件发送了HTMLUnit上的人,他们评论说他们不是在寻找一个端口或者会涉及到什么样的努力,但是建议任何想要开始这样一个项目的人都应该向他们的邮件列表发送一条消息,让更多的开发人员参与其中(http: //htmlunit.sourceforge.net/mail-lists.html).
解决方法:
我使用了内置WebView的android并覆盖了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
('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
}
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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11680 次 |
| 最近记录: |