我想知道是否有人能夠讓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