2013-09-30 12 views
5

मुझे एकाधिक कंपनियों के कैरियर पृष्ठों को स्क्रैप करने की आवश्यकता है (उनकी अनुमति के साथ)। तय करने मेंस्क्रैपिंग AJAX सक्षम वेबपृष्ठ

महत्वपूर्ण कारक क्या कर रहा

  1. का उपयोग मैं 2000 के आसपास पृष्ठों दैनिक scraping किया जाएगा, तो एक शालीनता से तेज समाधान
  2. जरूरत है इन पृष्ठों में से कुछ ajax के माध्यम से डेटा को पॉप्युलेट के बाद पृष्ठ भरी हुई है।
  3. मेरा वेबस्टैक रूबी/रेल माइस्क्ल इत्यादि के साथ है
  4. मैंने पहले स्क्रैपर्स (पायथन) (+ AJAX सक्षम पृष्ठों के लिए सेलेनियम) का उपयोग करके स्क्रैपर्स लिखे हैं।

मेरे संदेह

  1. मैं उलझन में है कि क्या मैं अजगर के साथ जाना चाहिए हूँ (यानी scrapy + सेलेनियम, मुझे लगता है कि इस अजगर में सबसे अच्छा विकल्प है), या बजाय (माणिक में कुछ अपने पूरे के रूप में पसंद करते हैं कोडबेस रूबी में है)।
  2. स्क्रैप + सेलेनियम अक्सर धीमा होता है, क्या रूबी में तेज़ विकल्प होते हैं? (इससे निर्णय आसान हो जाएगा) अजाक्स लोड किए गए पृष्ठों के समर्थन के साथ सबसे लोकप्रिय रूबी विकल्प वाटिर कोई भी इसकी गति पर टिप्पणी कर सकता है। इसके अलावा कोई अन्य गहरे लाल रंग का विकल्प (जैसे मशीनीकरण/Nokogiri + अजाक्स के लिए कुछ और ही भरी हुई पृष्ठों)

संपादित कर रहे हैं

, Watir-webdriver + Nokogiri का उपयोग कर समाप्त ताकि मैं डेटा संग्रह करते समय सक्रिय रिकॉर्ड का लाभ उठाएं। डेटा निकालने पर वॉटर-वेबड्राइवर से नोकोगिरी बहुत तेज है।

स्केपर तेजी से होता, लेकिन स्पीड ट्रेडऑफ स्कीपर में विभिन्न प्रकार की वेबसाइटों को संभालने में जटिलता व्यापार के रूप में महत्वपूर्ण नहीं था (उदाहरण के लिए कुछ लक्षित साइटों पर अजाक्स संचालित खोज, जिसे मुझे जरूरी है) ।

उम्मीद है कि यह किसी की सहायता करता है।

+0

यह आपके उपयोग के मामले में फिट नहीं सकता है, लेकिन मशीनीकरण/Nokogiri के साथ AJAX के पृष्ठों के लिए, आप क्या कर सकते हैं कि पेज को ताज़ा हर 5-10 सेकंड है। हालांकि यह आदर्श नहीं है और आपको आवश्यक आवृत्ति के आधार पर, आप उन जेएस कॉल के माध्यम से लोड किया गया कोई भी डेटा प्राप्त कर सकते हैं। –

+0

मुझे पूरा यकीन नहीं है कि आप जो कह रहे हैं वह सही है। मुझे लगता है कि मशीनीकरण/नोकोगिरी में जावास्क्रिप्ट दुभाषिया नहीं हैं (http://stackoverflow.com/questions/3852678/can-mechanize-read-ajax-ruby) –

+0

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

उत्तर

1

यदि गति महत्वपूर्ण है, तो आप watir-webdriver मणि PhantomJS (जावास्क्रिप्ट समर्थन के साथ हेडलेस ब्राउज़र) ड्राइव करने के लिए उपयोग कर सकते हैं। फ़ैंटॉमजेएस में किसी भी पेज को खोलें, और अगर वॉटर-वेबड्राइवर डेटा को प्राप्त करने में बहुत धीमा है, तो आप प्रस्तुत एचटीएमएल Nokogiri पर पास कर सकते हैं।

और अधिक पढ़ें:

+0

अभी भी आपके द्वारा उल्लिखित लिंक पर पढ़ रहा है। अंतिम लिंक एक कालबाह्य डोमेन की ओर जाता है, आपको इसे नवीनीकृत करना चाहिए। –

+0

लिंक अब बैक अप है –

+0

वॉटर-वेबड्राइवर + नोकोगिरी का उपयोग करके समाप्त हुआ, हालांकि मणि नहीं, क्योंकि मैंने भविष्य के लिए कुछ लचीलापन पसंद किया था। –

1

आप बाहर इस गाइड Making AJAX Applications Crawlable गूगल द्वारा प्रकाशित, की जाँच करनी चाहिए यह AJAX रेंगने योजना है जिसमें कुछ वेबसाइट समर्थन चर्चा करता है।

आप यूआरएल के हैश खंड में #! के लिए देखना चाहते हैं, यह क्रॉलर को इंगित करता है कि साइट AJAX क्रॉलिंग योजना का समर्थन करती है और सर्वर यूआरएल थोड़ा संशोधित होने पर पृष्ठ का एक HTML स्नैपशॉट वापस कर देगा।

Full Specification

+1

मार्गदर्शिका के लिए धन्यवाद (अगर मैं AJAX संचालित ऐप्स बनाउंगा जो मैं Google द्वारा स्क्रैप करना चाहता हूं तो मेरी मदद करेगा)। दुर्भाग्यवश मेरी सभी लक्षित साइटें इसका पालन नहीं करती हैं। –

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