我想知道是否有人能够让HtmlUnit在Android下运行?让HtmlUnit在Android下运行
我有我使用Jsoup(这个效果很好)刮的站点。但是,其中一个部分包含2页以上。该网站使用ASP.NET,并且他们正在使用JavaScript回发链接导致下一页。因此,我需要以某种方式执行该JavaScript来获取下一页的内容。这是我的企图的HtmlUnit进来
下面的代码工作完全基于Java:
WebClient webClient = new WebClient();
webClient.setJavaScriptEnabled(true);
HtmlPage page = null;
webClient.setThrowExceptionOnFailingStatusCode(false);
webClient.setThrowExceptionOnScriptError(false);
try {
page = webClient.getPage(URLOne.toString());
} catch (FailingHttpStatusCodeException e1) {
e1.printStackTrace();
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
HtmlAnchor anchor = (HtmlAnchor) page.getAnchorByHref("javascript:__doPostBack('lb_next','')");
try {
page = (HtmlPage) anchor.click();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
webClient.closeAllWindows();
Document doc1 = Jsoup.parse(page.asXml());
当我安装在安卓必要的库,我不得不删除:xalan的,Xerces和XML的API( HtmlUnit on Android)。如果我保留它们,我会转换为Dalvik错误。
没有他们的应用程序运行在Android的,但是当它涉及到的部分,需要我的HtmlUnit得到以下几个错误的logcat的:
Could not find method org.apache.http.conn.scheme.Scheme.<init>, referenced from method com.gargoylesoftware.htmlunit.HttpWebConnection.createHttpClient
Could not find method org.w3c.dom.css.CSSStyleDeclaration.getLength, referenced from method com.gargoylesoftware.htmlunit.javascript.host.css.ComputedCSSStyleDeclaration.applyStyleFromSelector
VFY: unable to find class referenced in signature (Lorg/w3c/dom/css/CSSStyleSheet;
VFY: unable to find class referenced in signature (Lorg/w3c/dom/css/CSSStyleDeclaration;
然后应用程序强制关闭。此问题与此类似:How do I get HtmlUnit to work under Android?和HtmlUnit Android problem with WebClient
我使用HtmlUnit的唯一原因是能够在该页面上运行Javascript。我愿意接受任何可能让我做类似的事情。
谢谢
我还没有成功 - 你有没有在Android的htmlunit任何成功? – bhekman
不,死路一条。放弃尝试以及。 – Elyas
如果您的Android项目中仍然需要Javascript,请查看Rhino。我得到它完美的工作,它比htmlunit小得多。 Bobik是另一个建议的网页抓取解决方案。检查我的线程在这里:http://stackoverflow.com/questions/11093130/scraping-dynamically-generated-html-inside-android-app – bhekman