2009-05-13 8 views
17

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

हाँ मुझे पता है कि एक बेहतर समाधान वेब ऐप को फिर से लिखना होगा, लेकिन इसमें विक्रेता में कॉल करना शामिल होगा और हमें छोटे भाग्य के रूप में खर्च करना होगा।

वैसे भी इसे देखते हुए मैंने पाया कि जिस वेब पेज को मैं स्क्रैप करना चाहता हूं वह ज्यादातर जावास्क्रिप्ट है (हालांकि यह किसी भी AJAX तकनीकों का उपयोग नहीं करता है)। क्या किसी को पता है कि कोई लाइब्रेरी या प्रोग्राम मौजूद है जिसे मैं जावास्क्रिप्ट के साथ खिला सकता हूं और फिर मेरे ऐप के लिए डीओएम को पार्स करने के लिए थूक देगा?

मैं किसी भी भाषा में ऐप को बहुत अधिक लिख सकता हूं लेकिन मेरी वरीयता जावाएफएक्स होगी, इसलिए मैं इसके साथ एक खेल सकता था।

आपके समय के लिए धन्यवाद।

इयान

+6

ahhhhh ... मैं सुबह में ताजा स्क्रीन स्क्रैप एचटीएमएल की गंध प्यार .... इस पोस्ट –

+0

चेक सेलेनियम http://stackoverflow.com/questions/125177/whats -ए-अच्छा-टू-टू-स्क्रीन-स्क्रैप-साथ-जावास्क्रिप्ट-समर्थन – osager

उत्तर

8

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

1

मैं के साथ जाना चाहते हैं पर्ल के Win32::IE::Mechanize अगर आप इंटरनेट एक्सप्लोरर को स्वचालित करने देता है। एमएसआईई को सभी जेएस संसाधित करने के कष्टप्रद कार्यों को करने के दौरान आपको आइकन पर क्लिक करने और टेक्स्ट निकालने में सक्षम होना चाहिए।

+0

मुझे पर्ल पसंद है लेकिन यह वेब ऐप आईई के साथ संगत नहीं है! मुझे केवल फ़ायरफ़ॉक्स और सफारी को बताया गया है। – IanW

5

चूंकि आप कहते हैं कि कोई AJAX उपयोग नहीं किया जाता है, तो सभी जानकारी HTML स्रोत पर मौजूद होती है। जावास्क्रिप्ट सिर्फ उपयोगकर्ता क्लिक के आधार पर इसे प्रस्तुत करता है। इसलिए आपको एप्लिकेशन के काम के तरीके को इंजीनियर करने की आवश्यकता है, एचटीएमएल और जावास्क्रिप्ट कोड को पार्स करें और उपयोगी जानकारी निकालें। यह टेक्स्ट पार्सिंग का सख्ती से व्यवसाय है - आपको जावास्क्रिप्ट चलाने और नए डोम का उत्पादन करने से निपटना नहीं चाहिए। यह करना बहुत मुश्किल होगा।

यदि AJAX का उपयोग किया गया था, तो आपका काम आसान होगा। आप आसानी से पता लगा सकते हैं कि AJAX सेवाएं कैसे काम करती हैं (शायद जेएसओएन और एक्सएमएल प्राप्त करके) और जानकारी निकालें।

+1

आपके उत्तर के लिए धन्यवाद। मैं बस वेब ऐप से जेएस और एचटीएमएल स्रोत देख रहा हूं और कुछ एजेक्स कॉल हैं जिन्हें मैंने पहले नहीं देखा था। – IanW

1

मैं kgiannakakis' answer से सहमत हूं। मुझे आश्चर्य होगा कि अगर आप जावास्क्रिप्ट को इंजीनियर से रिवर्स नहीं कर सकते हैं तो यह पता लगाने के लिए कि जानकारी कहां से आती है और फिर उसी जानकारी को स्क्रैप करने के लिए Urllib2 और the Beautiful Soup library का उपयोग करके कुछ सरल पायथन स्क्रिप्ट लिखें।

यदि पायथन और स्क्रैपिंग एक नया विचार है, तो कुछ उत्कृष्ट tutorials उपलब्ध होने के तरीके पर उपलब्ध है।

[संपादित करें] ऐसा लगता है कि a Python version of mechanize भी है। कुछ स्क्रैपर्स को फिर से लिखने का समय मैंने कुछ समय पहले विकसित किया था! :-)

4

आप एक greasemonkey जेएस का उपयोग करने पर विचार कर सकते हैं।greasemonkey एक बहुत ही शक्तिशाली फ़ायरफ़ॉक्स ऐड है जो आपको विशिष्ट वेब साइटों के साथ अपनी खुद की स्क्रिप्ट चलाने की अनुमति देता है। यह आपको संशोधित करने की अनुमति देता है कि वेबसाइट कैसे प्रदर्शित होती है, सामग्री को जोड़ या हटाती है। आप इसे AJAX स्टाइल लुकअप करने और गतिशील सामग्री जोड़ने के लिए भी उपयोग कर सकते हैं।

यदि आपका उपकरण घर के उपयोग के लिए है, और उपयोगकर्ता फ़ायरफ़ॉक्स का उपयोग करने में सभी खुश हैं तो यह विजेता हो सकता है।

सादर

+0

धन्यवाद Greasemonkey अच्छा लग रहा है मैंने पहले इसके बारे में नहीं सुना था। अफसोस की बात है कि मेरे कुछ उपयोगकर्ता अपने फ़ायरफ़ॉक्स इंस्टॉलेशन में एड इंस्टॉल करने में सक्षम नहीं हैं इसलिए मुझे नहीं लगता कि मैं इसका उपयोग कर पाऊंगा। – IanW

2

मैं IRobotSoft वेब स्क्रेपर सुझाव देते हैं। यह सर्वश्रेष्ठ जावास्क्रिप्ट समर्थन के साथ स्क्रीन स्क्रैपिंग के लिए एक समर्पित मुफ्त सॉफ्टवेयर है। आप अपने विजुअल इंटरफ़ेस के साथ रोबोट बना और परीक्षण कर सकते हैं। आप इसे अपने ActiveX नियंत्रण का उपयोग करके अपने ब्राउज़र में भी एम्बेड कर सकते हैं और ब्राउज़र विंडो को छुपा सकते हैं।

1

मैं एक परियोजना site2archivephantomJs का उपयोग करता है जे एस सामान और wget स्क्रैप करने सहित प्रस्तुत करना बनाया। phantomJs वेबकिट पर आधारित है, जो सफारी और Google क्रोम के समान ब्राउज़िंग वातावरण प्रदान करता है।

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