2010-07-15 14 views
7

मैं नहीं, मेरे जीवन के लिए, रिग अप इस साइट हड़पने के लिए HtmlUnit कर सकते हैं:HtmlUnit के लिए असंभव साइट?

http://www.bing.com/travel/flight/flightSearch?form=FORMTRVLGENERIC&q=flights+from+SLC+to+BKK+leave+07%2F30%2F2010+return+08%2F11%2F2010+adults%3A1+class%3ACOACH&stoc=0&vo1=Salt+Lake+City%2C+UT+%28SLC%29+-+Salt+Lake+City+International+Airport&o=SLC&ve1=Bangkok%2C+Thailand+%28BKK%29+-+Suvarnabhumi+International&e=BKK&d1=07%2F30%2F2010&r1=08%2F11%2F2010&p=1&b=COACH&baf=true

मुझे यकीन है कि यह पृष्ठभूमि में चल रहा लिपियों के विशाल मात्रा के साथ क्या करना है कर रहा हूँ। शायद इन स्क्रिप्ट को पूरी तरह से लोड करने के लिए पर्याप्त समय नहीं दिया जा रहा है?

मैंने बस bing.com/travel को पकड़ने की कोशिश की है, और कोई सफलता नहीं है। यह नए HtmlPage क्लाइंट के getPage फ़ंक्शन पर टूट रहा है।

उत्पादन runtimeErrors की अधिकता ("इस कार्य को पूरा करने के लिए आवश्यक डेटा अभी उपलब्ध नहीं है"), एक ही SOURCENAME ("http://www.bing.com/travel/jsxc.vjs?a=common&v=5.5.0-1278007084280")

फिर एक जोड़े को अपवाद एक लापता के लिए फेंक दिया के लिए सभी "(देता है "bing.com पर एक जोड़े लिपियों में।

तो यह जावास्क्रिप्ट कहता है, फिर अचानक समाप्त होता है।

मुझे पता है यह समस्याओं का एक मुट्ठी भर है कि दूसरों को देखने के लिए सक्षम नहीं हो सकता है हो सकता है, और देखते हैं, इसलिए यदि कोई सुझाव नहीं, क्या कोई इन दोनों साइटों को अपने स्वयं के एचटी के परीक्षण कार्यान्वयन के माध्यम से पंप करेगा mlUnit उपयोग करें और देखें कि क्या वे XML या टेक्स्ट परिणामों का मूल आउटपुट प्राप्त कर सकते हैं? मैं यहाँ कुछ भी फैंसी करने की कोशिश नहीं कर रहा हूं, बस परिणामों के कुछ बुनियादी पाठ या एक्सएमएल आउटपुट प्राप्त करें।

यह जानना आसान होगा कि किसी और का कार्यान्वयन काम करता है, इसलिए मैं जूरी-रिगिंग खान को पूरा करने के लिए रख सकता हूं।

कोड:

import com.gargoylesoftware.htmlunit.html.HtmlPage; 
import com.gargoylesoftware.htmlunit.WebClient; 

public class test { 

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

     WebClient client = new WebClient(); 
     System.out.println("webclient loaded"); 

     HtmlPage currentPage = client.getPage("http://www.bing.com/travel/flight/flightSearch?form=FORMTRVLGENERIC&q=flights+from+SLC+to+BKK+leave+07%2F30%2F2010+return+08%2F11%2F2010+adults%3A1+class%3ACOACH&stoc=0&vo1=Salt+Lake+City%2C+UT+%28SLC%29+-+Salt+Lake+City+International+Airport&o=SLC&ve1=Bangkok%2C+Thailand+%28BKK%29+-+Suvarnabhumi+International&e=BKK&d1=07%2F30%2F2010&r1=08%2F11%2F2010&p=1&b=COACH&baf=true"); 
     client.waitForBackgroundJavaScript(10000); 
     System.out.println("htmlpage init'd"); 

     //System.out.println(currentPage.getTitleText()); 
     String textSource = currentPage.asXml(); 
     System.out.println(textSource); 

} 

} 

धन्यवाद!

उत्तर

3

कोशिश जोड़ने इस:

client.setThrowExceptionOnScriptError(false) ; 

यह एक लंबे समय से चलाने के लिए लेता है, और लड़का इसे बाहर प्रवेश वमन करता है ... लेकिन अंततः एक पेज बाहर आया था:

htmlpage init'd 
<?xml version="1.0" encoding="utf-8"?> 
<html id=""> 
    <head> 
    ... 
+0

एक बंदूक की अच्छी तरह से बेटे ... धन्यवाद! तो इसके लायक करने के लिए के माध्यम से जा रहा है त्रुटियों और चेतावनियों को ठीक करें? जब तक मुझे कोई पृष्ठ नहीं मिलता है, हो सकता है कि यह प्रयास के लायक नहीं है ... –

+0

जो मुझे याद है उससे बहुत कुछ जानकारी लॉगिंग थी। यह मेरे एचटीएमएल यूनिट परीक्षणों की विशिष्ट है, कंसोल पागल की तरह यदि पृष्ठ निकलता है, तो इसके बारे में चिंता न करें। –

+0

मैं सिर्फ यह पुष्टि करना चाहता हूं कि ऊपर दी गई रेखा वास्तव में काम करती है। मुझे भी वही समस्या हो रही है - एक त्रुटि प्राप्त करना जो कहता है कि मैं पृष्ठ लोड के दौरान एक अप्रचलित जेएस सामग्री लोड कर रहा हूं। फिर अंत में, स्वचालित फॉर्म सबमिशन के दौरान, त्रुटि यह है कि जेएस सामग्री अभी तक उपलब्ध नहीं है। वही लॉग अभी भी दिखाई देते हैं, लेकिन कम से कम रनटाइम अपवाद जो फेंक दिया जाता है और पूरे निष्पादन को रोकता है। हालांकि, मुझे लगता है कि ऐसा इसलिए है क्योंकि जेएस जो लोड किया जा रहा था, मेरे लिए फॉर्म इनपुट और सबमिशन को पूरा करने के लिए आवश्यक नहीं है। –

2

मैं भी था "इस ऑपरेशन को पूरा करने के लिए जरूरी डेटा अभी तक उपलब्ध नहीं है" के साथ समस्या है।
उपयोगकर्ता-एजेंट के लिए "फ़ायरफ़ॉक्स" मदद की स्विचिंग ...
http://steveliles.github.com/jquery_htmlunit_runtimeerror_messages_galore.html

2

ब्राउज़र (जावास्क्रिप्ट में, लेकिन यह भी एचटीएमएल, सीएसएस और इसी तरह) क्या वे त्रुटि के रूप में पता लगा सकते के लिए एक उच्च सहनशीलता होती है। यह आंशिक रूप से विभिन्न विरोधाभासी "मानकों" के कारण है :) जावास्क्रिप्ट को कैसे कार्यान्वित किया गया है। एक ब्राउज़र पर ठीक दिखाई देने वाला कुछ अन्य पर समस्याएं पाता है। तो जब ये सभी संदेश दिखाई देते हैं तो यह थोड़ा विघटित होना चाहिए।

इसे परिप्रेक्ष्य में रखने के लिए - इंटरनेट एक्सप्लोरर में अपनी सेटिंग्स में जाएं और "प्रत्येक स्क्रिप्ट त्रुटि के बारे में अधिसूचना प्रदर्शित करें" के लिए "उन्नत सेटिंग्स" की जांच करें और फिर उसी साइट को ब्राउज़ करें। आप आश्चर्यचकित हो सकते हैं कि आईई को कितनी समस्याएं मिलती हैं जो इसे समस्याओं के रूप में पहचान सकती है।

विभिन्न ब्राउज़रों के तहत HtmlUnit का उपयोग करके इन कुछ संघर्षों को प्रकाश में लाता है।

एचटीएमएल को कुछ ऐसा करने के लिए बताएं "अनदेखा करें ...इस ब्राउज़र के लिए "एक पूरी तरह से वैध अभ्यास है। मेरे मामले में, मैं ऐसी साइट से डेटा ला रहा हूं जो जांचता है कि सभी उपयोगकर्ता इंटरनेट एक्सप्लोरर का उपयोग कर रहे हैं (नहीं, मुझे कोई अच्छा विचार नहीं है कि वे ऐसा क्यों करते हैं), इसलिए मैं कर सकता हूं 'टी जावास्क्रिप्ट त्रुटियों अनदेखी के बिना आगे बढ़ना। दिलचस्प है, साइट ठीक काम करता है, भले ही आईई जावास्क्रिप्ट त्रुटियों की वहाँ बहुत सारे हैं सोचता है।

संबंधित मुद्दे