मैं WebBrowser घटक से स्रोत कोड कैसे प्राप्त कर सकता हूं?मैं TWebBrowser से HTML स्रोत कोड कैसे प्राप्त कर सकता हूं
मैं वेबब्रोसर घटक पर सक्रिय पृष्ठ का स्रोत कोड प्राप्त करना चाहता हूं और इसे मेमो घटक में लिखना चाहता हूं।
धन्यवाद।
मैं WebBrowser घटक से स्रोत कोड कैसे प्राप्त कर सकता हूं?मैं TWebBrowser से HTML स्रोत कोड कैसे प्राप्त कर सकता हूं
मैं वेबब्रोसर घटक पर सक्रिय पृष्ठ का स्रोत कोड प्राप्त करना चाहता हूं और इसे मेमो घटक में लिखना चाहता हूं।
धन्यवाद।
आप स्ट्रीम में वेबब्रोसर की सामग्री को संग्रहीत करने के लिए IPersistStreamInit
इंटरफ़ेस और save विधि का उपयोग कर सकते हैं।
Uses
ActiveX;
function GetWebBrowserHTML(const WebBrowser: TWebBrowser): String;
var
LStream: TStringStream;
Stream : IStream;
LPersistStreamInit : IPersistStreamInit;
begin
if not Assigned(WebBrowser.Document) then exit;
LStream := TStringStream.Create('');
try
LPersistStreamInit := WebBrowser.Document as IPersistStreamInit;
Stream := TStreamAdapter.Create(LStream,soReference);
LPersistStreamInit.Save(Stream,true);
result := LStream.DataString;
finally
LStream.Free();
end;
end;
यह पूछा गया है और एम्बरकेडेरो मंचों में कई बार जवाब दिया गया है, जिसमें बहुत सारे कोड उदाहरण पोस्ट किए गए हैं। अभिलेखागार खोजें।
यह का सार यह है कि आप Navigate()
इच्छित URL और OnDocumentComplete
घटना IPersistStreamInit
इंटरफेस के लिए आग के लिए है, तो QueryInterface()
Document
संपत्ति और उसके save()
विधि कॉल प्रतीक्षा करें। TStream
ऑब्जेक्ट उदाहरण बनाएं, जैसे कि TMemoryStream
, इसे TStreamAdapter
ऑब्जेक्ट में लपेटें, और फिर एडाप्टर को save()
पर पास करें। इसके बाद आप को TMemo
में आवश्यकतानुसार लोड कर सकते हैं।
कि अच्छी तरह से भी काम करता है:
function GetHTML(w: TWebBrowser): String;
Var
e: IHTMLElement;
begin
Result := '';
if Assigned(w.Document) then
begin
e := (w.Document as IHTMLDocument2).body;
while e.parentElement <> nil do
begin
e := e.parentElement;
end;
Result := e.outerHTML;
end;
end;
गलत। यह आपको 'दस्तावेज़' तत्व का डीओएम प्रतिनिधित्व प्राप्त करेगा। यह HTML स्रोत कोड नहीं होगा। – kobik
हां आप सही हैं, मैं इसका इस्तेमाल एचटीएमएल स्रोत पर उपलब्ध कुछ डेटा को पार्स करने के लिए कर रहा था और इसके लिए डीओएम प्रस्तुति का उपयोग करना ठीक था। –
मैं आपके उत्तर को ऊपर उठाऊंगा, यह किसी भी मामले में उपयोगी है। मैं एक विदेशी वेबसाइट से एचटीएमएल में हेरफेर/पार्स करने के लिए हमारे मकड़ी में एक समान विधि का भी उपयोग करता हूं। – kobik
यह काम करता है। आपका बहुत बहुत धन्यवाद। – Leadri
हम इसे रिवर्स तरीके से कैसे काम कर सकते हैं: SetWebBrowserHTML, इस प्रकार पहले निकाले गए कोड को वेबब्रोसर (या TEmbeddedWebBrowser) पर वापस इंजेक्शन कर रहा है। मैं निम्नलिखित स्थिति की कल्पना करता हूं: एक ज्ञापन घटक HTML स्रोत कोड GetWebBrowserHTML के साथ प्राप्त करता है, तो उपयोगकर्ता स्रोत कोड में कुछ बदलाव करता है, फिर परिवर्तित स्रोत कोड को वेबब्राउज़र में फिर से इंजेक्शन दिया जाता है। यह ब्राउज़र में रीयल-टाइम पूर्वावलोकन के साथ एक अच्छा HTML संपादक बना देगा! – user1580348
बेहतर: 'LStream: = TStringStream.Create ('', TEncoding.UTF8);' – user1580348