2012-06-04 13 views
7

के साथ निष्पादित करें, मैं एक दस्तावेज़ (स्ट्रिंग फॉर्म में) या एक यूआरएल का उपयोग करके एक डोम लोड करना चाहता हूं, और उसके बाद जावास्क्रिप्ट फ़ंक्शंस (jquery selectors सहित) निष्पादित करना चाहता हूं। प्रक्रिया में, कोई क्लाइंट/ब्राउज़र नहीं, यह पूरी तरह से सर्वर पक्ष होगा।एक डोम लोड करें और जावास्क्रिप्ट, सर्वर पक्ष, .NET

असल में मुझे डोम लोड करने की आवश्यकता है और फिर jquery चयनकर्ताओं और टेक्स्ट() & टाइप वैल() फ़ंक्शंस को तार निकालने के लिए उपयोग करें। मुझे वास्तव में डोम में हेरफेर करने की ज़रूरत नहीं है।

मैंने ज्यैसिक और जिंट जैसे नेट जावास्क्रिप्ट इंजन को देखा है, लेकिन न ही एक डोम लोड करने का समर्थन करता है, और इसलिए मुझे जो चाहिए वह नहीं कर सकता।

यदि वे मौजूद हैं तो मैं .NET समाधान (node.js, ruby, आदि) पर विचार करने के इच्छुक हूं, लेकिन वास्तव में .NET पसंद करेंगे।

संपादित नीचे एक अच्छा जवाब है, लेकिन वर्तमान में मैं एक अलग रास्ता कोशिश कर रहा हूँ, मैं जुरासिक को बंदरगाह envjs करने का प्रयास कर रहा हूँ। अगर मैं यह काम कर सकता हूं तो मुझे लगता है कि यह वही करेगा जो मैं चाहता हूं, ट्यूनेड रहें ....

+0

यह कैसे आ रहा है? मुझे इस तरह की एक परियोजना से लाभ उठाना अच्छा लगेगा - या इस तरह की एक परियोजना, क्योंकि मैंने अपना खुद का प्रयास किया लेकिन समय के लिए रुका है। अगर आप चाहते हैं, तो बस @ जीमेल जोड़ें।मेरे एसओ नाम पर कॉम और आप मुझसे संपर्क कर सकते हैं। मेरे पास एक जावास्क्रिप्ट प्रोजेक्ट है जो यहां जुरासिक को ActiveX जोड़ता है: jurascript.codeplex.com – aikeru

उत्तर

12

उत्तर आप जो करने की कोशिश कर रहे हैं उस पर निर्भर करता है। यदि आपका लक्ष्य मूल रूप से एक पूर्ण वेब ब्राउज़र सिमुलेशन है, या "हेडलेस ब्राउज़र" है, तो कई समाधान हैं, लेकिन इनमें से कोई भी (जिसे मैं जानता हूं) .NET में स्पष्ट रूप से मौजूद है। ब्राउज़र की नकल करने के लिए, आपको जावास्क्रिप्ट इंजन और एक डोम चाहिए। आपने कुछ इंजनों की पहचान की है; मैंने जुरासिक को सबसे मजबूत और सबसे तेज दोनों पाया है। गूगल क्रोम वी 8 इंजन भी बहुत लोकप्रिय है; Neosis Javascript.NET प्रोजेक्ट इसके लिए एक .NET wrapper प्रदान करता है। यह बिल्कुल शुद्ध नहीं है क्योंकि आपके पास गैर-.NET निर्भरता है, लेकिन यह साफ-सुथरा रूप से एकीकृत है और उपयोग करने में बहुत परेशानी नहीं है।

लेकिन जैसा कि आपने नोट किया है, आपको अभी भी एक डोम चाहिए। शुद्ध सी # में XBrowser है, लेकिन यह थोड़ा सा दिखता है। पूरे ब्राउज़र DOM जैसे jsdom की जावास्क्रिप्ट-आधारित प्रस्तुतियां भी हैं। आप शायद जुरासिक में जेएसडॉम चला सकते हैं, जिससे आप ब्राउज़र के बिना एक डोम सिमुलेशन दे सकते हैं, सी # में सभी (हालांकि बहुत धीमी गति से!) यह निश्चित रूप से वी 8 में ठीक होगा। यदि आप .NET दायरे से बाहर निकलते हैं, तो अन्य बेहतर-समर्थित समाधान भी हैं। This question HtmlUnit पर चर्चा करता है। फिर वास्तविक वेब ब्राउज़र स्वचालित करने के लिए Selenium है।

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

यदि आपकी ज़रूरत वास्तव में एचटीएमएल मैनिपुलेशन है, और इसे वास्तव में जावास्क्रिप्ट का उपयोग करने की आवश्यकता नहीं है, लेकिन आप जेएस में उपलब्ध ऐसे टूल्स की संपत्ति के बारे में और सोच रहे हैं, तो मैं इस उद्देश्य के लिए डिजाइन किए गए सी # टूल्स को देखूंगा। उदाहरण के लिए HTML Agility Pack, या मेरी अपनी परियोजना CsQuery, जो एक सी # jQuery पोर्ट है।

यदि आप मूल रूप से क्लाइंट के लिए लिखे गए कुछ कोड लेने की कोशिश कर रहे हैं, लेकिन इसे सर्वर पर चलाएं - उदा। परिष्कृत/त्वरित वेब स्क्रैपिंग के लिए - मैं उन शर्तों का उपयोग करके चारों ओर खोज करूंगा। उदाहरण के लिए this question इस पर चर्चा करता है, PhantomJS, एक हेडलेस वेबकिट ब्राउज़र स्टैक सहित उत्तर के साथ-साथ कुछ परीक्षण टूल जिन्हें मैंने पहले ही उल्लेख किया है। वेब स्क्रैपिंग के लिए, मुझे लगता है कि आप इसके बिना .NET में रह सकते हैं, और यह वही उचित जवाब हो सकता है।

+0

क्या CsQuery जुरासिक के लिए एक डोम के रूप में कार्य कर सकता है (थोड़ा रैपर परत के साथ)? – mcintyre321

+0

CsQuery का DOM कार्यान्वयन ब्राउज़र से बहुत अलग है क्योंकि सी # दृढ़ता से टाइप की गई भाषा है और जावास्क्रिप्ट नहीं है। Jsdom का उपयोग करना बहुत आसान होगा जो पहले से ही इस उद्देश्य के लिए जावास्क्रिप्ट में लिखा गया है - सिद्धांत रूप में इसे जुरासिक में चलाना चाहिए हालांकि मुझे नहीं पता कि किसी ने इससे पहले कोशिश की है या नहीं। (मैंने वास्तव में CsQuery के लिए jsdom से यूनिट परीक्षण उधार शुरू किया)। –

+0

मैं इसमें देख रहा हूं - आपको कुछ चीजें हैं जो आपको ज्यूरैसिक में नहीं हैं, लेकिन एक अन्य परियोजना है जिसे जुरास्क्रिप्ट कहा जाता है जिसमें आवश्यक बिट्स और बॉब्स हैं। http://jurassic.codeplex.com/discussions/360450 – mcintyre321

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