2013-10-17 10 views
7

Jsoup के बारे में एक प्रश्न: मैं एक उपकरण बना रहा हूं जो वेबसाइट से कीमतें लाता है। हालांकि, इस वेबसाइट पर स्ट्रीमिंग सामग्री है। यदि मैं मैन्युअल रूप से ब्राउज़ करता हूं, तो मुझे 20 मिनट पहले की कीमतें दिखाई देती हैं और वर्तमान मूल्य प्राप्त करने के लिए लगभग 3 सेकंड प्रतीक्षा करनी पड़ती है। क्या कोई तरीका है कि मैं स्ट्रीमिंग सेक्शन में कीमतें प्राप्त करने में सक्षम होने के लिए जेएसओप में किसी तरह की देरी कर सकता हूं? मैं इस कोड का उपयोग कर रहा हूँ:स्ट्रीमिंग वेबसाइट

conn = Jsoup.connect(link).userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36"); 

conn.timeout(5000); 

doc = conn.get(); 
+0

और आपके द्वारा पोस्ट की गई विधि काम नहीं करती ..? –

+0

धन्यवाद! यह दस्तावेज़ भर जाएगा लेकिन केवल देरी की कीमतों के साथ। समस्या यह है कि मुझे शुरुआत में पृष्ठ लोड करने के बाद 3 सेकंड की तरह प्रदर्शित होने वाली कीमतों की आवश्यकता होती है। – Wouter

+2

कीमतें वास्तव में एक ही HTTP कनेक्शन में आ रही हैं? या यह पृष्ठ में कुछ जेएस कोड द्वारा भरा हुआ है? क्या आप हमें बेहतर समझने के लिए उस धारा का हिस्सा दिखा सकते हैं? –

उत्तर

0

टिप्पणी में उल्लेख किया है, साइट सबसे अधिक संभावना पटकथा कि सिर्फ Jsoup साथ काम नहीं करेंगे के कुछ प्रकार का उपयोग है। चूंकि Jsoup को प्रारंभिक HTML प्रतिक्रिया प्राप्त होती है और किसी भी जावास्क्रिप्ट को निष्पादित नहीं करती है।

मैं आपको कुछ और संकेत देना चाहता था, हालांकि अब कहां जाना है। इन मामलों में सबसे अच्छी शर्त, इन प्रकार की साइटों के लिए एक और मंच पर जाना है। आप HTMLUnit पर माइग्रेट कर सकते हैं जो एक हेडलेस ब्राउज़र है, या Selenium जो HTMLUnit या फ़ायरफ़ॉक्स या क्रोम जैसे वास्तविक ब्राउज़र का उपयोग कर सकता है। मैं सेलेनियम की सलाह दूंगा यदि आपको लगता है कि आपको कभी भी HTMLUnit को HTMLUnit के रूप में स्थानांतरित करने की आवश्यकता होगी, उपभोक्ता ब्राउज़र सेलेनियम की तुलना में कभी-कभी ब्राउज़र कम हो सकता है। आप सेलेनियम का उपयोग HTMLUnit ड्राइवर के साथ कर सकते हैं जो आपको बाद में किसी अन्य ब्राउज़र पर जाने का विकल्प प्रदान करता है।

1

आप जावास्क्रिप्ट सक्षम के साथ JavaFX WebView का उपयोग कर सकते हैं। दो सेकंड प्रतीक्षा करने के बाद, आप सामग्री निकाल सकते हैं और उन्हें JSoup में पास कर सकते हैं।

 
(After loading your url into your WebView using the example above) 
String text=view.getEngine() executeScript("document.documentElement.outerHTML"); 
Document doc = Jsoup.parse(html); 
संबंधित मुद्दे