दिलचस्प पोस्ट
मैं NumLock, CapsLock और ScrollLock की स्थिति को नेट में कैसे पा सकता हूं? SQL सर्वर में सप्ताह के पहले दिन प्राप्त करें "बैच" क्या है, और क्यों जाना जाता है? जावा में बूलीयन अभिव्यक्ति पार्सर क्या लैम्ब्डा फ़ंक्शन कॉल को फिर से अजगर में कॉल कर सकता है? एक्सेंटेंट वर्णों को बदलने के लिए php उप-प्रकार या नहीं उपयोग करने के लिए डीबी डिजाइन? PHP के साथ HTML कोड से यूट्यूब वीडियो आईडी प्राप्त करें आईई 7 और सीएसएस तालिका-सेल संपत्ति अजाक्स फ़ाइल डाउनलोड करें Jquery, PHP SQL सर्वर प्रबंधन स्टूडियो (2005 या बाद के संस्करण) में अलग-अलग विंडोज प्रयोक्ता से कनेक्ट करें मेरे एंड्रॉइड ऐप में पाठ को कैसे प्रतिलिपि करें? ट्यूप्ले को खोलने के लिए अजगर का रास्ता क्या है? इस पर कुछ कार्रवाई करने के बाद पायथन इटरेटर खाली है जावास्क्रिप्ट में पृष्ठ पर मैं ऑब्जेक्ट की पूर्ण स्थिति कैसे प्राप्त करूं?

WebBrowser नियंत्रण में प्रदान की जाने वाली HTML (जावास्क्रिप्ट द्वारा संसाधित) कैसे प्राप्त करें?

मेरे पास एक एएसपी.नेट पेज और कुछ कस्टम क्लास है जो निर्दिष्ट वेबपेज लाता है, और यह पेज बॉडी रिटर्न करता है।

protected String GetHtml() { Thread thread = new Thread(new ThreadStart(GetHtmlWorker)); thread.SetApartmentState(ApartmentState.STA); thread.Start(); thread.Join(); return docHtml; } protected void GetHtmlWorker() { using (WebBrowser browser = new WebBrowser()) { browser.ScriptErrorsSuppressed = true; browser.Navigate(_url); // Wait for control to load page while (browser.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents(); docHtml = browser.DocumentText; } 

लेकिन मुझे क्या चाहिए – स्रोत के बजाय डोम एचटीएमएल मिलता है, क्योंकि मैं jQuery पर DOM पर कुछ अतिरिक्त कार्य करता हूं।

वेब के समाधान से एकत्रित समाधान "WebBrowser नियंत्रण में प्रदान की जाने वाली HTML (जावास्क्रिप्ट द्वारा संसाधित) कैसे प्राप्त करें?"

जावास्क्रिप्ट चलाए जाने के बाद यहां प्रस्तुत समाधान (डीओएम) प्राप्त करने का एक उपाय यहां दिया गया है:

WebBrowser1 नामक एक WebBrowser नियंत्रण को फॉर्म फॉर्म 1 पर रखें।

[Form1.cs [डिजाइन]]

फिर कोड उपयोग के लिए:

[Form1.cs]

 using System; using System.Runtime.InteropServices; using System.Windows.Forms; namespace WebBrowserTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.webBrowser1.ObjectForScripting = new MyScript(); } private void Form1_Load(object sender, EventArgs e) { webBrowser1.Navigate("http://localhost:6489/Default.aspx"); } private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { webBrowser1.Navigate("javascript: window.external.CallServerSideCode();"); } [ComVisible(true)] public class MyScript { public void CallServerSideCode() { var doc = ((Form1)Application.OpenForms[0]).webBrowser1.Document; } } } } 

WebBrowser1.Navigate (" http: // localhost: 6489 / Default.aspx ") पैरामीटर को पेज 1 में लोड करें, जिसके DOM को जावास्क्रिप्ट द्वारा संसाधित करने के बाद आप प्राप्त करना चाहते हैं।

आप कॉलसर्वरसाइडकोड () विधि में संशोधित DOM का उपयोग कर सकते हैं, उदाहरण के लिए:

 doc.GetElementById("myDataTable"); 

या आप इस तरह से प्रदान किए गए HTML का उपयोग कर सकते हैं:

 var renderedHtml = doc.GetElementsByTagName("HTML")[0].OuterHtml; 

जैसा कि जॉर्ज ने एक टिप्पणी में कहा था, सिद्धांत में आप केवल वेबब्रोजर 1_Document में DOM को बस का उपयोग करके समाहित कर सकते हैं:

 webBrowser1.Document.GetElementsByTagName("HTML")[0].OuterHtml; 

सबसे पहले एक छोटी पृष्ठभूमि मैं एक वेब पेज से जानकारी को परिमार्जन करने की कोशिश कर रहा हूं इस वेबपृष्ठ की सामग्री गतिशील है गतिशील से मेरा क्या मतलब है कि वेब पृष्ठ आपको अधिक जानकारी को लोड करता है, जैसा कि आप पृष्ठ के निचले भाग में स्क्रॉल करते हैं जैसा कि आप पृष्ठ के निचले भाग में स्क्रॉल करते हैं, उतना HTML सामग्री बदलती है दुर्भाग्य से वेब ब्राउजर ऑब्जेक्ट इस जानकारी को स्वचालित रूप से अद्यतन नहीं करता है। यह अभी भी मूल दस्तावेज़ है जो इसे पहले webbrowser.navigatewebbrowser.navigate फ़ंक्शन के द्वारा लोड किया गया था। अद्यतन जानकारी HTMLElementCollection लिए उपलब्ध है।

निम्नलिखित कोड मेरे लिए काम नहीं किया।

 webBrowser1.Document.GetElementsByTagName("HTML")[0].OuterHtml 

मैंने ऊपर दिए गए बयान को तोड़ दिया

  Dim eCollections As HtmlElementCollection Dim strDoc As String eCollections = WB.Document.GetElementsByTagName("HTML") strDoc = eCollections(0).OuterHtml 

एक जादू की तरह काम किया। उम्मीद है कि यह किसी को भी मदद करता है

एक अन्य तरीका फॉर्म पर टाइमर सेट करना होगा, फिर जब टाइमर हिट हो जाता है, तो पृष्ठ में फिर से गाया जाएगा और आप पृष्ठ को पार्स कर सकते हैं।

आप प्राप्त कर सकते हैं

webBrowser1.Document.Body.OuterHtml