2013-02-22 34 views
5

के साथ स्क्रैप किए गए जावास्क्रिप्ट को निष्पादित करना मेरे पास एक वेब पेज है जिसमें कुछ जेएस एपीआई हैं जो डोम को परिवर्तित नहीं करते हैं, लेकिन कुछ संख्याएं लौटाते हैं। मैं एक नोडजेएस एप्लिकेशन लिखना चाहता हूं जो ऐसे पृष्ठों को डाउनलोड करता है और डाउनलोड किए गए पृष्ठ के संदर्भ में उन कार्यों को निष्पादित करता है।चीरियो

मैं पृष्ठ स्क्रैपिंग के लिए चीरियो देख रहा था .. लेकिन जब मैं देखता हूं कि इसके साथ डीओएम नेविगेट करना और उसका उपयोग करना कितना आसान है, तो मुझे पृष्ठ कार्यों को चलाने के लिए कोई पहुंच दिखाई नहीं देती है। क्या यह करना संभव है?

क्या मुझे जेएसडम पर देखना चाहिए?

धन्यवाद

+0

[यह] (http://stackoverflow.com/a/7978072/2172543) आपके प्रश्न के बारे में अब तक का सबसे अच्छा SO उत्तर है। यह वेब पेज जावास्क्रिप्ट को निष्पादित करने के बारे में सख्ती से नहीं है, HTML पार्सिंग के बारे में है। – Marcel

उत्तर

1

बंदगी और jsdom दोनों एचटीएमएल स्क्रेपर्स कर रहे हैं और जावास्क्रिप्ट को क्रियान्वित करने का बोध भी नहीं की है। यदि आप जिस एपीआई को एक्सेस करना चाहते हैं उसे जावास्क्रिप्ट में लिखा गया है, तो उन्हें निकालने और उन्हें नोड के अंदर चलाने से रोकने के लिए बहुत कुछ नहीं है। सावधान रहें, मनमाने ढंग से जावास्क्रिप्ट को डाउनलोड/निष्पादित करने से एक बड़ा सुरक्षा जोखिम हो सकता है। यदि आप किसी ब्राउज़र के व्यवहार को अनुकरण करना चाहते हैं, तो http://phantomjs.org/ देखें। यह नोड के लिए एक हेडलेस ब्राउज़र है और यह भी एक साधारण ब्राउज़र कर सकता है सब कुछ कर सकते हैं।

+1

ध्यान दें कि यदि आप नोड में जेएस को सुरक्षित रूप से चलाने के लिए चाहते हैं, तो यह 'vm' मॉड्यूल के माध्यम से पूरी तरह से करने योग्य है जिसमें' runInContext' विधि है जो आपके शेष कोड से पूरी तरह अलग है (लेकिन फिर भी संसाधनों को हॉग कर सकती है)। –

+2

jsdom ** ** जावास्क्रिप्ट निष्पादित करने की कोई धारणा नहीं है, केवल एक HTML स्क्रैपर नहीं है। दस्तावेज़ देखें: [प्रारंभिक जीवन चक्र] (https://github.com/tmpvar/jsdom/blob/master/README.md#initialization-lifecycle) और [कट्टर के लिए: jsdom.jsdom] (https: // github। com/tmpvar/jsdom/ब्लॉब/मास्टर/README.md # for--कट्टर-jsdomjsdom) – rsp

2

लगता है जैसे आप फ़ैंटॉमजेएस का उपयोग करना चाहते हैं, जो पूरी तरह से प्रस्तुत आउटपुट प्रदान करेगा, और फिर उस पर चीरियो का उपयोग करें।