我想知道是否有人能够让 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());
当我在 Android 中设置必要的库时,我必须删除:xalan、xerces 和 xml-apis(Android 上的 HtmlUnit)。如果我保留它们,我会转换为 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? 和WebClient 的 HtmlUnit Android 问题
我使用 HtmlUnit 的唯一原因是能够在该页面上运行 Javascript。我愿意接受任何可能让我做类似事情的替代方案。
谢谢