2012-06-13 37 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