2012-06-13 40 views
3

我想知道是否有人能夠讓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。我願意接受任何可能讓我做類似的事情。

謝謝

+0

我還沒有成功 - 你有沒有在Android的htmlunit任何成功? – bhekman

+0

不,死路一條。放棄嘗試以及。 – Elyas

+0

如果您的Android項目中仍然需要Javascript,請查看Rhino。我得到它完美的工作,它比htmlunit小得多。 Bobik是另一個建議的網頁抓取解決方案。檢查我的線程在這裏:http://stackoverflow.com/questions/11093130/scraping-dynamically-generated-html-inside-android-app – bhekman

回答

0

請勿使用htmlUnit。

你會認爲你只需要幾個核心瓶。那麼,你可能需要所有的人,否則你可能會遇到一些沒有發現錯誤的類。

只是看看你有多少罐裝載到Eclipse中才能運行它! 共有21個罐子,超過10mb!請記住,您還可以爲Android電子市場打包最多50MB的內容。它只會減慢Eclipse的速度,當您調試時可能需要增加內存。

改用Jsoup!

+0

Jsoup無法執行JavaScript ..任何替代品? – Shylux

+0

也許看看Selenium,它有一個JavascriptExecutor – Yini