2011-02-04 20 views
5

की तलाश में मुझे बेस यूआरएल (जैसे http://www.wired.com) की आपूर्ति करने की आवश्यकता है और पृष्ठों की एक सरणी (बेस यूआरएल से बाहर) को आउटपुट करने वाली पूरी साइट के माध्यम से मकड़ी की आवश्यकता है। क्या कोई पुस्तकालय है जो चाल करेगा?एक साधारण जावा स्पाइडर

धन्यवाद।

उत्तर

5

मैंने कुछ बार Web Harvest का उपयोग किया है, और यह वेब स्क्रैपिंग के लिए काफी अच्छा है।

वेब-हार्वेस्ट ओपन सोर्स वेब डेटा जावा में लिखे गए निष्कर्षण उपकरण है। यह वांछित वेब पृष्ठों को एकत्रित करने और से उपयोगी डेटा निकालने का एक तरीका प्रदान करता है। ऐसा करने के लिए, यह अच्छी तरह से स्थापित तकनीक और टेक्स्ट/एक्सएमएल के लिए तकनीकें एक्सएसएलटी, एक्सक्वियर और नियमित अभिव्यक्तियों जैसे हेरफेर का लाभ उठाती है। वेब-हार्वेस्ट मुख्य रूप से HTML/XML आधारित वेब साइटों पर केंद्रित है जो अभी भी वेब सामग्री के विशाल बहुमत बनाते हैं। दूसरी तरफ, कस्टम जावा पुस्तकालयों द्वारा को इसकी निष्कर्षण क्षमताओं को बढ़ाने के लिए इसे आसानी से पूरक किया जा सकता है।

वैकल्पिक रूप से, आप अपने खुद के वेब स्क्रेपर ऐसे JTidy के रूप में उपकरण का उपयोग कर पहली एक्सएचटीएमएल के लिए एक HTML दस्तावेज़ कन्वर्ट करने के लिए, और फिर जानकारी आप XPath साथ की जरूरत है प्रसंस्करण रोल कर सकते हैं। उदाहरण के लिए, बहुतhttp://www.wired.com से सभी हाइपरलिंक्स निकालने के लिए भ्रामक XPath अभिव्यक्ति //a[contains(@href,'wired')]/@href जैसी कुछ होगी। आप इस दृष्टिकोण के लिए इस answer में इसी तरह के प्रश्न के लिए कुछ नमूना कोड पा सकते हैं।

+0

इस संसाधन के लिए धन्यवाद। मैं इसे सफलतापूर्वक अनुकूलित करने में सक्षम था। हालांकि, यदि एक वेबपृष्ठ प्रतिक्रिया 500 में परिणाम देती है, तो स्क्रैपर विफल रहता है (उदाहरण के लिए - http://www.allure.com/magazine/flipbook) "एक अवैध XML वर्ण (यूनिकोड: 0x0) तत्व सामग्री में पाया गया था दस्तावेज़ का। " इस त्रुटि संदेश पर कोई विचार? – rs79

2

'सरल' शायद यहां एक प्रासंगिक अवधारणा नहीं है। यह एक जटिल कार्य है। मैं nutch की सलाह देते हैं।

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