2012-01-23 7 views
7

के साथ जेएस जेनरेटेड एचटीएमएल डाउनलोड करें एक रिपोर्ट वेबसाइट है जो सामग्री मैं सी # में पार्स करना चाहता हूं। मैंने वेब क्लाइंट के साथ एचटीएमएल डाउनलोड करने का प्रयास किया लेकिन फिर मुझे पूरा स्रोत नहीं मिला क्योंकि जब मैं वेबसाइट पर जाता हूं तो इसमें से अधिकांश जेएस के माध्यम से उत्पन्न होता है।सी #

मैंने WebBrowser का उपयोग करने की कोशिश की लेकिन एप्लिकेशन.रुन() और SetApartmentState (ApartmentState.STA) का उपयोग करने के बाद भी इसे कंसोल ऐप में काम करने के लिए नहीं मिला।

क्या इस जेनरेट किए गए एचटीएमएल तक पहुंचने का कोई और तरीका है? मैंने mshtml में भी एक नज़र डाली लेकिन इसे समझ नहीं पाया।

धन्यवाद

उत्तर

3

जावास्क्रिप्ट ब्राउज़र द्वारा निष्पादित किया जाता है। यदि आपका कंसोल ऐप जेएस प्राप्त करता है, तो यह अपेक्षित के रूप में काम कर रहा है, और आपके कंसोल ऐप को डाउनलोड किए गए जेएस कोड को निष्पादित करने के लिए आपको वास्तव में क्या चाहिए।

+0

मैं इसके साथ समाप्त हुआ, लेकिन इसे लागू करने में परेशानी थी। धन्यवाद – lander16

3

आप एक बिना सिर ब्राउज़र का उपयोग कर सकते हैं - XBrowser सर्वर हो सकता है।

यदि नहीं, तो this blog post में वर्णित अनुसार HtmlUnit आज़माएं।

+0

उल्लेख करना भूल गया, मैं किसी बाहरी पुस्तकालय का उपयोग नहीं कर सकता। अन्यथा यह बहुत अच्छा होता। धन्यवाद – lander16

+0

@ लैंडर 16 - फिर 'वेब ब्राउजर' आपकी एकमात्र पसंद है। http://stackoverflow.com/questions/5519294/getting-webbrowser-control-to-work-in-console- appplication – Oded

0

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

((HttpWebRequest)myWebClientRequest).UserAgent = "<a valid user agent>"; 

उदाहरण के लिए, मेरे वर्तमान उपयोगकर्ता एजेंट है:

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1 

हो सकता है कि एक बार आप उस पृष्ठ सही ढंग से काम होगा। यहां काम करने वाले अन्य कारक हो सकते हैं, जैसे रेफरर और इसी तरह, लेकिन मैं इसे पहले कोशिश करता हूं और देखता हूं कि यह काम करता है या नहीं।

+0

वह जिस कारण से वह उम्मीद कर रहा है वह प्राप्त नहीं कर रहा है क्योंकि साइट पर निष्पादित जावास्क्रिप्ट की वजह से है। एक HttpWebRequest जावास्क्रिप्ट निष्पादित नहीं करेगा। वह WebBrowser के साथ सही रास्ते पर है। – SoWeLie

0

आपकी सर्वश्रेष्ठ शर्त कंसोल ऐप रूट को छोड़ना और विंडोज फॉर्म एप्लिकेशन बनाना है। उस स्थिति में WebBrowser किसी भी काम के बिना काम करेगा।