2012-05-15 6 views
7

मै मैकेनाइजेशन का उपयोग कर रहा हूं, हालांकि मैकेनाइज इसे नहीं कर सकता है, हालांकि मैं नोकोगिरी के लिए खुला हूं।जेएस ने डोम को बदलने के बाद कुछ कैसे स्क्रैप किया?

मैं पहले से विरोध के रूप में सभी स्क्रिप्ट लोड होने के बाद पृष्ठ को स्क्रैप करना चाहता हूं।

मैं यह कैसे कर सकता हूं?

उत्तर

4

Nokogiri और मशीनीकरण संपूर्ण वेब ब्राउज़र नहीं हैं और कर ब्राउज़र-मॉडल DOM में जावास्क्रिप्ट नहीं चलाएं। आप Watir या Selenium जैसे कुछ का उपयोग करना चाहते हैं जो आपको वास्तविक वेब ब्राउज़र को नियंत्रित करने के लिए रूबी का उपयोग करने की अनुमति देता है।

+1

यदि आप एक वास्तविक जावास्क्रिप्ट-सक्षम ब्राउज़र को स्वचालित करने के लिए चाहते हैं लेकिन दृश्यमान विंडो के बिना, एक हेडलेस ब्राउज़र (कैपिबरा-वेबकिट) [https://github.com/thoughtbot/capybara-webkit] या (फ़ैंटॉमजेएस) [http: //phantomjs.org/] (अन्य भी हैं)। – echristopherson

+1

@echristopherson धन्यवाद; वे [capybara-webkit] (https://github.com/thoughtbot/capybara-webkit) और [PhantomJS] (http://phantomjs.org/) क्रमशः (निश्चित मार्कअप लिंक) हैं। – Phrogz

0

मुझे मशीनी या नोकोगिरी के बारे में कुछ भी पता नहीं है, इसलिए मैं विशेष रूप से उन पर टिप्पणी नहीं कर सकता। हालांकि, संशोधित होने के बाद जावास्क्रिप्ट प्राप्त करने का मुद्दा यह है कि मेरा मानना ​​है कि केवल अधिक जावास्क्रिप्ट के साथ हल किया जा सकता है। नए जेनरेट किए गए HTML को प्राप्त करने के लिए आपको दस्तावेज़ तत्व का .innerHTML प्राप्त करना होगा। यह मुश्किल हो सकता है क्योंकि आपको किसी पृष्ठ में जेएस इंजेक्ट करना होगा।

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

आप प्लग-इन में रुचि रखते हैं इस एक ही स्थान पर शुरू करने के लिए है //anthonystechblog.wordpress.com/category/internet/firefox/

+0

स्क्रैच से अपनी प्लगइन रोल करने के बजाय, Greasemonkey शायद यह कर सकता है। – FatalError

2

वॉटर-वेबड्राइवर और कैपिबरा-वेबकिट के अलावा, celerity एक अच्छा विकल्प है हालांकि यह केवल जर्बी है।

6

मुझे लगता है कि एक अच्छा विकल्प Nokogiri, Watir, और PhantomJs साथ कुछ इस तरह है:

b = Watir::Browser.new(:phantomjs)

b.goto URL

doc = Nokogiri::HTML(b.html)

जिसके परिणामस्वरूप दस्तावेज़ से होगा जब लिपियों के बाद लोड किया गया है। और phantomjs अच्छा है क्योंकि ब्राउज़र लोड करने की कोई आवश्यकता नहीं है।

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