2016-12-05 16 views
7

HtmlUnit kullanarak google sayfasını kaydetmeye çalışıyorum. Ama doğru kullanıcı arayüzünü alamıyorum. Kaydedilen sayfa kodlarını kontrol ettiğimde stil etiketleri boş.HtmlUnit css düzgün uygulanmamış

Kodum işte burada.

public static void main(String[] args) throws IOException { 

    FileUtils.cleanDirectory(new File("/home/user1/Documents/Aaa")); 
    WebClient webClient = new WebClient(BrowserVersion.CHROME); 
    webClient.getOptions().setCssEnabled(true); 
    webClient.getOptions().setJavaScriptEnabled(true); 
    webClient.getOptions().setThrowExceptionOnFailingStatusCode(false); 
    webClient.getOptions().setThrowExceptionOnScriptError(false); 
    webClient.waitForBackgroundJavaScriptStartingBefore(1000); 
    webClient.waitForBackgroundJavaScript(1000); 
    webClient.getOptions().setTimeout(5000); 
    System.out.println("******************loaded**********************************"); 
    try { 
     HtmlPage page = webClient.getPage("https://www.google.com"); 
     page.save(new File("/home/user1/Documents/Aaa/index.html")); 
    } catch (Exception e) { 
     System.out.println("******************catch***********************************"); 
     e.printStackTrace(); 
    } 
    webClient.close(); 
    System.out.println("******************finished********************************"); 
} 

Ve sayfam

enter image description here

Konsolu gibi görünüyor

Dec 10, 2016 3:47:45 PM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify 
WARNING: Obsolete content type encountered: 'text/javascript'. 
Dec 10, 2016 3:47:46 PM com.gargoylesoftware.htmlunit.javascript.StrictErrorReporter runtimeError 
SEVERE: runtimeError: message=[TypeError: object is not iterable] sourceName=[https://www.google.co.in/xjs/_/js/k=xjs.s.en.igGBAtxEWN0.O/m=sx,c,sb,cdos,cr,elog,hsm,jsa,r,qsm,j,p,d,csi/am=AAiUPF6wAOL_ISBuIRxBasDAoA/rt=j/d=1/t=zcms/rs=ACT90oGjQTdwqicso-l4vNE-7GeAqTtjtw] line=[10] lineSource=[null] lineOffset=[0] 
Dec 10, 2016 3:47:46 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error 
WARNING: CSS error: 'https://www.google.co.in/?gfe_rd=cr&ei=RtZLWL3cDsmL8QeW4Yb4AQ' [1:14018] Error in expression. (Invalid token " ". Was expecting one of: <NUMBER>, "inherit", <IDENT>, <STRING>, <HASH>, <EMS>, <EXS>, <LENGTH_PX>, <LENGTH_CM>, <LENGTH_MM>, <LENGTH_IN>, <LENGTH_PT>, <LENGTH_PC>, <ANGLE_DEG>, <ANGLE_RAD>, <ANGLE_GRAD>, <TIME_MS>, <TIME_S>, <FREQ_HZ>, <FREQ_KHZ>, <RESOLUTION_DPI>, <RESOLUTION_DPCM>, <PERCENTAGE>, <DIMENSION>, <URI>, <FUNCTION>, "progid:".) 
Dec 10, 2016 3:47:46 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error 
WARNING: CSS error: 'https://www.google.co.in/?gfe_rd=cr&ei=RtZLWL3cDsmL8QeW4Yb4AQ' [1:14042] Error in expression. (Invalid token " ". Was expecting one of: <NUMBER>, "inherit", <IDENT>, <STRING>, <HASH>, <EMS>, <EXS>, <LENGTH_PX>, <LENGTH_CM>, <LENGTH_MM>, <LENGTH_IN>, <LENGTH_PT>, <LENGTH_PC>, <ANGLE_DEG>, <ANGLE_RAD>, <ANGLE_GRAD>, <TIME_MS>, <TIME_S>, <FREQ_HZ>, <FREQ_KHZ>, <RESOLUTION_DPI>, <RESOLUTION_DPCM>, <PERCENTAGE>, <DIMENSION>, <URI>, <FUNCTION>, "progid:".) 
Dec 10, 2016 3:47:46 PM com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine handleJavaScriptException 
INFO: Caught script exception 
======= EXCEPTION START ======== 
EcmaError: lineNumber=[551] column=[0] lineSource=[null] name=[TypeError] sourceName=[https://www.google.co.in/xjs/_/js/k=xjs.s.en.igGBAtxEWN0.O/m=sx,c,sb,cdos,cr,elog,hsm,jsa,r,qsm,j,p,d,csi/am=AAiUPF6wAOL_ISBuIRxBasDAoA/rt=j/d=1/t=zcms/rs=ACT90oGjQTdwqicso-l4vNE-7GeAqTtjtw] message=[TypeError: Cannot read property "Kf" from undefined (https://www.google.co.in/xjs/_/js/k=xjs.s.en.igGBAtxEWN0.O/m=sx,c,sb,cdos,cr,elog,hsm,jsa,r,qsm,j,p,d,csi/am=AAiUPF6wAOL_ISBuIRxBasDAoA/rt=j/d=1/t=zcms/rs=ACT90oGjQTdwqicso-l4vNE-7GeAqTtjtw#551)] 
com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot read property "Kf" from undefined (https://www.google.co.in/xjs/_/js/k=xjs.s.en.igGBAtxEWN0.O/m=sx,c,sb,cdos,cr,elog,hsm,jsa,r,qsm,j,p,d,csi/am=AAiUPF6wAOL_ISBuIRxBasDAoA/rt=j/d=1/t=zcms/rs=ACT90oGjQTdwqicso-l4vNE-7GeAqTtjtw#551) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:921) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:628) 
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:515) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:852) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:824) 
    at com.gargoylesoftware.htmlunit.InteractivePage.executeJavaScriptFunctionIfPossible(InteractivePage.java:216) 
    at com.gargoylesoftware.htmlunit.javascript.host.event.EventListenersContainer.executeEventListeners(EventListenersContainer.java:258) 
    at com.gargoylesoftware.htmlunit.javascript.host.event.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:322) 
    at com.gargoylesoftware.htmlunit.javascript.host.event.EventTarget.fireEvent(EventTarget.java:206) 
    at com.gargoylesoftware.htmlunit.javascript.host.Window.dispatchEvent(Window.java:2033) 
    at com.gargoylesoftware.htmlunit.javascript.host.Window$2$1.run(Window.java:2119) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:628) 
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:515) 
    at com.gargoylesoftware.htmlunit.javascript.host.Window$2.execute(Window.java:2124) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.doProcessPostponedActions(JavaScriptEngine.java:966) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.access$500(JavaScriptEngine.java:101) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:916) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:628) 
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:515) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:852) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:824) 
    at com.gargoylesoftware.htmlunit.InteractivePage.executeJavaScriptFunctionIfPossible(InteractivePage.java:216) 
    at com.gargoylesoftware.htmlunit.javascript.host.event.EventListenersContainer.executeEventListeners(EventListenersContainer.java:258) 
    at com.gargoylesoftware.htmlunit.javascript.host.event.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:322) 
    at com.gargoylesoftware.htmlunit.javascript.host.event.EventTarget.fireEvent(EventTarget.java:191) 
    at com.gargoylesoftware.htmlunit.html.DomElement$2.run(DomElement.java:1190) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:628) 
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:515) 
    at com.gargoylesoftware.htmlunit.html.DomElement.fireEvent(DomElement.java:1195) 
    at com.gargoylesoftware.htmlunit.html.DomElement.fireEvent(DomElement.java:1163) 
    at com.gargoylesoftware.htmlunit.InteractivePage.setFocusedElement(InteractivePage.java:100) 
    at com.gargoylesoftware.htmlunit.InteractivePage.setFocusedElement(InteractivePage.java:66) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.detach(HtmlElement.java:1254) 
    at com.gargoylesoftware.htmlunit.html.DomNode.remove(DomNode.java:1132) 
    at com.gargoylesoftware.htmlunit.html.DomNode.replace(DomNode.java:1210) 
    at com.gargoylesoftware.htmlunit.javascript.host.dom.Node.replaceChild(Node.java:444) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at net.sourceforge.htmlunit.corejs.javascript.MemberBox.invoke(MemberBox.java:153) 
    at net.sourceforge.htmlunit.corejs.javascript.FunctionObject.call(FunctionObject.java:448) 
    at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpretLoop(Interpreter.java:1540) 
    at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpret(Interpreter.java:800) 
    at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:105) 
    at net.sourceforge.htmlunit.corejs.javascript.NativeArray.iterativeMethod(NativeArray.java:1694) 
    at net.sourceforge.htmlunit.corejs.javascript.NativeArray.execIdCall(NativeArray.java:405) 
    at net.sourceforge.htmlunit.corejs.javascript.IdFunctionObject.call(IdFunctionObject.java:94) 
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2575) 
    at net.sourceforge.htmlunit.corejs.javascript.BaseFunction.execIdCall(BaseFunction.java:321) 
    at net.sourceforge.htmlunit.corejs.javascript.IdFunctionObject.call(IdFunctionObject.java:94) 
    at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpretLoop(Interpreter.java:1540) 
    at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpret(Interpreter.java:800) 
    at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:105) 
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.doTopCall(ContextFactory.java:413) 
    at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.doTopCall(HtmlUnitContextFactory.java:252) 
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3264) 
    at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.exec(InterpretedFunction.java:115) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$3.doRun(JavaScriptEngine.java:794) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:906) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:628) 
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:515) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:803) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:779) 
    at com.gargoylesoftware.htmlunit.html.HtmlPage.loadExternalJavaScriptFile(HtmlPage.java:975) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript.executeScriptIfNeeded(HtmlScript.java:352) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript$2.execute(HtmlScript.java:238) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.doProcessPostponedActions(JavaScriptEngine.java:966) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.access$500(JavaScriptEngine.java:101) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:916) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:628) 
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:515) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:852) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:824) 
    at com.gargoylesoftware.htmlunit.InteractivePage.executeJavaScriptFunctionIfPossible(InteractivePage.java:216) 
    at com.gargoylesoftware.htmlunit.javascript.background.JavaScriptFunctionJob.runJavaScript(JavaScriptFunctionJob.java:52) 
    at com.gargoylesoftware.htmlunit.javascript.background.JavaScriptExecutionJob.run(JavaScriptExecutionJob.java:102) 
    at com.gargoylesoftware.htmlunit.javascript.background.JavaScriptJobManagerImpl.runSingleJob(JavaScriptJobManagerImpl.java:426) 
    at com.gargoylesoftware.htmlunit.javascript.background.DefaultJavaScriptExecutor.run(DefaultJavaScriptExecutor.java:157) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: net.sourceforge.htmlunit.corejs.javascript.EcmaError: TypeError: Cannot read property "Kf" from undefined (https://www.google.co.in/xjs/_/js/k=xjs.s.en.igGBAtxEWN0.O/m=sx,c,sb,cdos,cr,elog,hsm,jsa,r,qsm,j,p,d,csi/am=AAiUPF6wAOL_ISBuIRxBasDAoA/rt=j/d=1/t=zcms/rs=ACT90oGjQTdwqicso-l4vNE-7GeAqTtjtw#551) 
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3915) 

bu durum için herhangi bir fikir kaydeder?

Düzenlendi: Bu hata, CSS3 süzme özelliği olduğunda ayrıştırma olduğunu düşünüyorum. Google sayfa kodunda böyle.

Bu filtrede bir kolon bulunur ve progrid'in bir virüsü vardır. Yani bu, CSS Ayrıştırma hatasına yol açar. Bunun için herhangi bir çözüm var mı? İlk başta

+0

Gösterilecek herhangi bir konsol iletisi? –

+0

Bence "index.html" yerine webClient ... 'i ve webClient.close()' nin bu webClient.close() 'in de yorumunu yaparken,' 'webClient.close();' '... –

+0

sonucu – Anbarasan

cevap

2

:

WARNING: CSS error: 'https://www.google.co.in/?gfe_rd=cr&ei=hyxFWPuPJMyL8QfigajQCw' 

Bu bir uyarıdır, az ya da çok css ayrıştırıcı verilen css kurallardan birini sevmez demektir edilir. Bunun gerçek bir etkisi yoktur, çünkü bu sayfadaki js kodu stil için bir html öğesi isterse bu bazı eksik biçim bilgilerinin ortaya çıkmasına neden olabilir. Verilen yer anlamsızdır de bu aramaları yaparak -

İkinci

webClient.waitForBackgroundJavaScriptStartingBefore(1000); 
webClient.waitForBackgroundJavaScript(1000); 

Bu iki çağrıları hiçbir yapılandırma seçenekleri vardır.

Ama her ikisi sadece küçük şeylerdir, sahip tek gerçek sorun

com.gargoylesoftware.htmlunit.ScriptException: Exception invoking constructor 

istisnadır. Bu genellikle sayfa için js işlemeyi durdurur (ancak ThrowExceptionOnScriptError'u false olarak ayarladığınız için durumunuzda olmaz).

Sorunu analiz etmek için en azından kurucu tarafından atılan istisnanın yığın izine ihtiyacımız var. Genellikle bu yığın izlemesi de günlüğün bir parçasıdır.

Belki de daha basit bir çözüm var. Kullandığınız HtmlUnit sürümü hakkında herhangi bir bilgi vermediniz. En son kullanılabilir SNAPSHOT yapısını kullanmayı önermek istiyorum (http://htmlunit.sourceforge.net/gettingLatestCode.html numaralı telefondan edinebileceğiniz bazı bilgileri bulabilirsiniz). En son htmlunit koduyla hızlı bir test yaptım ve herhangi bir istisna olmaksızın sayfayı alabildim.

public static void main(String[] args) throws IOException { 

    FileUtils.cleanDirectory(new File("c://temp/htmlunit/aa")); 
    WebClient webClient = new WebClient(BrowserVersion.CHROME); 
    webClient.getOptions().setCssEnabled(true); 
    webClient.getOptions().setJavaScriptEnabled(true); 
    webClient.getOptions().setThrowExceptionOnFailingStatusCode(false); 
    webClient.getOptions().setThrowExceptionOnScriptError(false); 
    webClient.getOptions().setTimeout(5000); 
    System.out.println("******************loaded**********************************"); 
    try { 
     HtmlPage page = webClient.getPage("https://www.google.com"); 
     webClient.waitForBackgroundJavaScriptStartingBefore(1000); 
     webClient.waitForBackgroundJavaScript(1000); 
     page.save(new File("c://temp/htmlunit/aa/index.html")); 
    } catch (Exception e) { 
     System.out.println("******************catch***********************************"); 
     e.printStackTrace(); 
    } 
    webClient.close(); 
    System.out.println("******************finished********************************"); 
} 
+0

Hey 2.23 son sürümüne HtmlUnit'in güncellenmiş Ama yine progrid var.:. Ayrıca İstisna ve uygulanmayan CSS ve ben güncellenmiş sürümü için konsol günlükleri güncelleme – Anbarasan

+0

(1) Benim önerim son anlık güncellemek etmekti... ... (2) Yine cc şey bir uyarı .... olduğunu (3) Ve son olarak com.gargoylesoftware.htmlunit.ScriptException: TypeError:. mülkiyet sorunun okunamıyor Bunun anlamı içinde (en azından bir kesimini) Sayfadaki komut dosyası çalışmıyor. HtmlUnit'in en son SNAPSHOT sürümü ile hala bu sorunla karşılaşırsanız, bir sorun açmanız gerekir. Ancak yumruğunuz http://htmlunit.sourceforge.net/submittingJSBugs.html adresine bakmalıdır. – RBRi

+0

Başka olası bir sorun da dökülmüş sayfa olabilir. Bu sayfa hala yerel dosya sisteminize ve bazılarına internete bağlantılar içermektedir. Belki bu bağlantılardan biri bozulur. – RBRi

İlgili konular