2008-10-15 18 views
12

गतिशील वेबसाइट को स्क्रैप करने का सबसे अच्छा तरीका क्या है जहां अधिकांश सामग्री AJAX अनुरोधों के द्वारा उत्पन्न होती है? मेरे पास मैकेनाइज, सुंदर सूप, और पायथन कॉम्बो के साथ पिछले अनुभव है, लेकिन मैं कुछ नया करने के लिए तैयार हूं।एक गतिशील वेबसाइट स्क्रैप करें

- एडिट - अधिक जानकारी के लिए: मैं सीएनएन primary database स्क्रैप करने की कोशिश कर रहा हूं। वहाँ जानकारी की एक संपत्ति है, लेकिन एक एपीआई प्रतीत नहीं होता है।

उत्तर

7

यह एक कठिन समस्या है क्योंकि आपको या तो प्रति-साइट के आधार पर जावास्क्रिप्ट को इंजीनियर करना होगा, या जावास्क्रिप्ट इंजन को लागू करना होगा और स्क्रिप्ट चलाएं (जिसमें इसकी अपनी कठिनाइयों और समस्याएं हैं)।

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

-Adam

3

एडम डेविस की सलाह ठोस है।

मैं अतिरिक्त सुझाव है कि आप "रिवर्स इंजीनियर" क्या जावास्क्रिप्ट, और बदले पेज स्क्रैप करने का प्रयास करने का कर रहा है, तो आप HTTP अनुरोध है कि जावास्क्रिप्ट जारी करने है जारी करने और परिणामों की व्याख्या अपने आप कोशिश (सबसे अधिक संभावना JSON प्रारूप में, अच्छा और पार्स करने में आसान)। जावास्क्रिप्ट की जटिलता के आधार पर यह रणनीति तुच्छ से कुल दुःस्वप्न तक कुछ भी हो सकती है।

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

0

यह लगता है कि यह एक बहुत ही आम समस्या। मुझे आश्चर्य है कि क्यों किसी को किसी को भी किसी प्रोग्राम-ब्राउज़र नहीं विकसित की है? मैं एक Firefox आप एक तर्क के रूप में एक यूआरएल के साथ कमांड लाइन से कॉल कर सकते हैं और यह envisioning हूँ की तरह पृष्ठ लोड कर देगा, प्रारंभिक पृष्ठ लोड जे एस घटनाओं के सभी

मैं फ़ायरफ़ॉक्स, और अन्य ब्राउज़रों मतलब पहले से ही ऐसा कर चलाने के लिए और जिसके परिणामस्वरूप फ़ाइल सहेजें।, क्यों हम बस बंद यूआई सामान पट्टी नहीं कर सकते?

+2

लोगों ने वेबकिट के साथ ऐसा किया है, उदाहरण के लिए यहां: http://blog.motane.lu/2009/07/07/downloading-a-pages-content-with-python-and-webkit/comment-page- 1 – hoju

4

से लिनियम आईडीई, परीक्षण के लिए एक उपकरण है, मैंने कुछ स्क्रीन-स्क्रैपिंग के लिए उपयोग किया है। ऐसी कुछ चीजें हैं जो अच्छी तरह से संभाल नहीं पाती हैं (जावास्क्रिप्ट window.alert() और सामान्य रूप से पॉपअप विंडो), लेकिन यह वास्तव में क्लिक ईवेंट को ट्रिगर करके और टेक्स्ट बॉक्स में टाइप करके पृष्ठ पर अपना काम करता है। चूंकि फ़ायरफ़ॉक्स में आईडीई भाग चलता है, इसलिए आपको सत्रों के सभी प्रबंधन आदि नहीं करना पड़ता है क्योंकि फ़ायरफ़ॉक्स इसका ख्याल रखता है। आईडीई रिकॉर्ड और नाटकों का परीक्षण वापस आता है।

यह सेलेनियम सर्वर पर निष्पादित संकलित परीक्षण/स्क्रैपर्स बनाने के लिए सी #, PHP, जावा, आदि कोड भी निर्यात करता है। मैंने अपनी सेलेनियम स्क्रिप्ट्स में से कुछ से अधिक के लिए ऐसा किया है, जो डेटाबेस में स्क्रैप किए गए डेटा को संग्रहीत करने जैसी चीज़ों को बहुत आसान बनाता है।

लिपियों को लिखने और बदलने के लिए काफी सरल हैं, जैसे "(क्लिक एंडवेट", "सबमिट बटन")। आप जो वर्णन कर रहे हैं उसे देखते हुए एक नज़र डालें।

7

मुझे मिला सबसे अच्छा समाधान XmlHttpRequests की निगरानी करने के लिए फ़ायरबग का उपयोग करना था, और फिर उन्हें भेजने के लिए एक स्क्रिप्ट का उपयोग करना था।

1

शायद सी # (या किसी अन्य भाषा) में आईई वेबब्रोसर नियंत्रण का उपयोग करने का सबसे आसान तरीका है।आपके पास बॉक्स के बाहर ब्राउज़र के अंदर सभी चीजों तक पहुंच है + आपको कुकीज़, एसएसएल और इसी तरह की देखभाल करने की आवश्यकता नहीं है।

2

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

1

मुझे पता चला कि आईई वेबब्रोसर नियंत्रण में सभी प्रकार के क्विर्क और वर्कअराउंड हैं जो कुछ उच्च गुणवत्ता वाले सॉफ़्टवेयर को shvwdoc.dll api और mshtml के चारों ओर स्तरित करने और एक ढांचा प्रदान करने के लिए कुछ उच्च गुणवत्ता वाले सॉफ़्टवेयर को न्यायसंगत साबित करेंगे।

0

मेरा पहला प्रश्न है: क्या आप पुष्टि कर सकते हैं कि साइट पूरी तरह से जावास्क्रिप्ट के बिना काम नहीं करती है? यदि आप जावास्क्रिप्ट को बंद करते हैं तो आपको आश्चर्य होगा कि कितनी साइटें अभी भी उपयोग योग्य हैं। आपको शायद यूआरएल के थोड़ा अलग सेट पर निर्देशित किया जाएगा।

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