2011-08-18 13 views
28

क्या node.js के लिए कोई हेडलेस ब्राउज़र है जो एक प्रतिपादित पृष्ठ को फ़ाइल में डंप करने का समर्थन करता है? मुझे पता है कि phantomjs फ़ाइल में प्रतिपादन का समर्थन करता है, लेकिन यह node.js. पर नहीं चलता है। मुझे पता है zombie.js एक node.js हेडलेस ब्राउज़र है, लेकिन यह फ़ाइल में प्रतिपादन का समर्थन नहीं करता है।हेडलेस node.js जावास्क्रिप्ट ब्राउज़र?

+0

क्या आपने ऐसी परियोजनाओं की तलाश की है जो jsdom का उपयोग करते हैं? मुझे पता है कि ऐसा करने के लिए कुछ हैं, बस – wesbos

+2

नामों को भूल जाओ यहां एक नया प्रेत-नोड रैपर है जो आपको नोड से प्रेतोज़ चलाने देता है ..कोशिश नहीं की है लेकिन यह आशाजनक लग रहा है: https://github.com/sgentle/phantomjs-node – ZimSystem

+2

वेस, जेएसडम दस्तावेज़ ऑब्जेक्ट मॉडल बनाता है और कुशलतापूर्वक उपयोग करता है जो पूरी तरह से गैर-ग्राफिकल इन-मेमोरी डेटा संरचनाएं हैं। यह प्रश्न ग्राफिकल वेब पेज को पूरी तरह से प्रस्तुत करने के बारे में है, जो पूरी तरह से एक और मामला है। –

उत्तर

3

यह एक छोटा सा भूमि के ऊपर के साथ एक समाधान की तरह लग रहे हो सकता है ...

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

अब आपको बाहर से ब्राउज़र को node.js. के साथ नियंत्रित करना होगा। मैंने कुछ उदाहरण देखे हैं जहां किसी ने फ़ायरफ़ॉक्स के chrome.js के अंदर एक http समान इंटरफ़ेस लागू किया है। तो आप एक स्क्रीनशॉट प्राप्त करने के लिए एक http कमांड चला सकते हैं। फिर आप node.js. से http कॉल का उपयोग कर सकते हैं। यह अजीब लग सकता है, यह वास्तव में है लेकिन आपके लिए अच्छा काम कर सकता है।

मैं async मोड में पर्ल Mojolicious साथ उत्पादन में एक थोड़ा संशोधित संस्करण चला रहा स्क्रीनशॉट को गति प्रदान करने। हालांकि, एक छोटी सी समस्या है। जब प्लगइन्स की आवश्यकता होती है तो वे काम करते हैं, हालांकि फ्लैश आमतौर पर सक्रिय क्षेत्र में सक्रिय होने पर सक्रिय हो जाता है, ऐसा नहीं होगा इसलिए फिल्में/फ्लैश चीजें प्रारंभ नहीं हो सकती हैं।

12

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

+32

चैलेंज स्वीकृत –

+6

मैं पूरी तरह से एक फॉलोअप लिंक, @ डेविड मर्डोक की उम्मीद करता हूं। – NateDSaint

+0

मैंने आज थोड़ी देर के लिए इसे दूर कर दिया और जहां तक ​​मैंने आशा की थी उतनी दूर नहीं मिली। मैं jsdom, नोड-कैनवास, और html2canvas एक साथ मैशिंग पर योजना बना रहा था। मुझे एहसास नहीं हुआ कि जेएसडम ने आयामों को लागू नहीं किया है। :-( –

3

आपको यह सहायक मिल सकता है, हालांकि यह जावास्क्रिप्ट विशिष्ट नहीं है।

एक वेबकिट-आधारित टूल है जिसे "wkhtmltopdf" कहा जाता है जिसे मैं समझता हूं कि क्यूटी वेब-किट विजेट का उपयोग करके जावास्क्रिप्ट समर्थन शामिल है। यह पीडीएफ प्रारूप में पृष्ठ के दृश्य प्रतिनिधित्व ("स्क्रीनशॉट" यदि आप करेंगे) आउटपुट करता है। php-wkthmltox

+0

यदि "फ़ाइल में प्रतिपादन" का अर्थ है "स्क्रीनशॉट ", जो मुझे लगता है लेखक का इरादा है, यह एक सभ्य उत्तर है। :) –

1

एक परियोजना नोड-काइमेरा कहा जाता है:

Fwiw, वहाँ भी इसे यहाँ के लिए पीएचपी बाइंडिंग कर रहे हैं। यद्यपि यह फ़ैंटोमज के रूप में परिपक्व नहीं है, लेकिन इसमें आपके द्वारा उल्लिखित सभी सुविधाएं हैं: यह देशी नोडजेस पर चलता है, और आपको पृष्ठों को एक फ़ाइल में प्रस्तुत करने की अनुमति देता है। रिपोजिटरी यहां है: https://github.com/deanmao/node-chimera। इसमें आपको वही करने के लिए उदाहरण हैं जो आपको चाहिए।

+4

ऐसा लगता है कि इस परियोजना को अब और नहीं रखा गया है –

5

nightmare आज़माएं, यह इलेक्ट्रॉन का उपयोग करता है, यह phantomjs से तेज़ तरीका है, और यह एपीआई आसान है और आधुनिक ES6 जावास्क्रिप्ट का उपयोग करता है।

1

क्रोम देव टीम ने Puppeteer जारी किया है जिसका उपयोग नोड में किया जा सकता है। यह क्रोम का उपयोग हेडलेस विकल्प के साथ करता है।

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