2009-01-08 20 views
6

मुझे किसी वेबसाइट से कुछ डेटा स्क्रैप करने की आवश्यकता है, क्योंकि यह उनकी वेब सेवा के माध्यम से उपलब्ध नहीं है। जब मुझे पहले ऐसा करने की आवश्यकता होती है, तो मैंने डेटा डाउनलोड करने के लिए प्रासंगिक HTTP कॉल करने के लिए अपाचे की HTTP क्लाइंट लाइब्रेरी का उपयोग करके जावा कोड लिखा है। मैंने प्रासंगिक HTTP कॉल लॉग करने के लिए Charles web proxy का उपयोग करते समय ब्राउज़र में प्रासंगिक स्क्रीन के माध्यम से क्लिक करके मुझे आवश्यक प्रासंगिक कॉलों का पता लगाया।स्वत: उत्पन्न HTTP स्क्रीन स्क्रैपिंग जावा कोड

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

धन्यवाद, डॉन

उत्तर

2

आप HtmlUnit पर एक नज़र रखना चाहिए - यह परीक्षण वेबसाइटों के लिए डिजाइन किया गया था लेकिन एक से अधिक पृष्ठों के माध्यम से स्क्रीन scraping के लिए महान और नेविगेट काम करता है। यह कुकीज़ और अन्य सत्र से संबंधित सामान का ख्याल रखता है।

3

manageability.org ब्लॉग में एक प्रविष्टि है जो जावा के लिए वेब पेज स्क्रैपिंग टूल का एक पूरा समूह सूचीबद्ध करती है। हालांकि, मैं अभी तक इस तक पहुंचने में सक्षम नहीं हूं, लेकिन मुझे Google के कैश here में केवल टेक्स्ट का प्रतिनिधित्व मिला।

+3

सही पता है: http://www.manageability.org/blog/stuff/screen-scraping-tools-written-in-java/view?searchterm=scraping – vonjd

0

The Grinder नामक एक उपकरण आपको अपनी प्रॉक्सी से गुजरकर साइट पर एक सत्र स्क्रिप्ट करने की अनुमति देता है। आउटपुट पायथन (ज्योथन में चलने योग्य) है।

+0

यदि आउटपुट जावा कोड था, तो यह होगा वास्तव में मैं क्या देख रहा हूँ। मुझे पता है कि आप जेथन पर जेथन पर पाइथन चला सकते हैं, लेकिन मुझे जावा कोड चाहिए। –

4

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

वर्तमान में सभी मुख्य जावास्क्रिप्ट पुस्तकालयों के लिए full featured support है और उनका उपयोग करके जेएस कोड निष्पादित करेगा। इसके साथ आप अपने परीक्षण के भीतर प्रोग्राम में जावास्क्रिप्ट ऑब्जेक्ट्स को हैंडल कर सकते हैं।

यदि आप जो कुछ करने की कोशिश कर रहे हैं उसका दायरा कम है, तो कुछ HTML तत्वों को पढ़ने की लाइनों के साथ और जहां आप जावास्क्रिप्ट के बारे में अधिक परवाह नहीं करते हैं, तो NekoHTML का उपयोग करना पर्याप्त होना चाहिए। यह JDom के समान प्रोग्रामेटिक प्रदान करता है - बजाय XPath - पेड़ तक पहुंच। पृष्ठों को पुनर्प्राप्त करने के लिए आपको शायद अपाचे के HttpClient का उपयोग करने की आवश्यकता होगी।

2

मैं कहूंगा कि मैं व्यक्तिगत रूप से स्क्रीन स्क्रैपिंग के लिए अपने 2 पसंदीदा टूल के रूप में HtmlUnit और सेलेनियम का उपयोग करना पसंद करता हूं।

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