如何通过WebBrowser Control(ActiveX InternetExplorer)获取页面源代码?
我有一个xml文档“foo.xml”。
var
Web: TWebBrowser;
begin
...
Web.Navigate("foo.xml");
// How can I get source code thru WebBrower control<----
...
end;
答案 0 :(得分:1)
我认为这很容易,但似乎它可能已被遗忘。您可以使用TidHTTP控件轻松完成此操作。
MyPage := IdHTTP1.Get('www.google.com');
我知道这不是你想要的,但可能有帮助。
答案 1 :(得分:1)
在DocumentCompleted事件中,查看WebBrowser控件的DocumentText
属性。它应该包含已加载页面的完整文本。
答案 2 :(得分:1)
IHTMLDocument2(Web.Document).Body.InnerHTML;
这应该返回页面的来源。
答案 3 :(得分:1)
另一种效果很好的方法是使用Synapse。使用synapse调用HttpGet检索您的初始资源(它为您提供源代码),然后根据需要进行操作。
另一种选择是使用EmbeddedWB组件,它比标准的Delphi组件更多地暴露了Web浏览器的更多属性和功能,并且仍然符合您在Web浏览器中执行此操作的要求。
答案 4 :(得分:1)
要通过WebBrowser控件访问页面的整个HTML,请使用:
Web.Document.All[0].OutterHtml;
答案 5 :(得分:1)
private void btnTest_Click(object sender, EventArgs e)
{
wbMain.Navigate("foo.xml");
wbMain.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(testing);
}
private void testing(Object sender, WebBrowserDocumentCompletedEventArgs e)
{
test = wbMain.DocumentText;
}
我知道这有点晚了但这对我有用。 wbMain是WebBrowser对象。
答案 6 :(得分:1)
WebBrowser1.Navigate()使用Windows操作系统中内置的IE组件将其加载到RAD组件窗口中。您所做的是响应回调(对于浏览器组件,双击OnDownloadComplete事件)并将其保存到该函数中的文件。工作代码片段:
procedure TMainForm.WB_SaveAs_HTML(WB : TWebBrowser; const FileName : string) ;
var
PersistStream: IPersistStreamInit;
Stream: IStream;
FileStream: TFileStream;
begin
if not Assigned(WB.Document) then
begin
Logg('Document not loaded!') ; //'Logg' adds a line to a log file.
Exit;
end;
PersistStream := WB.Document as IPersistStreamInit;
FileStream := TFileStream.Create(FileName, fmCreate) ;
try
Stream := TStreamAdapter.Create(FileStream, soReference) as IStream;
if Failed(PersistStream.Save(Stream, True)) then ShowMessage('SaveAs HTML fail!') ;
finally
FileStream.Free;
end;
end; (* WB_SaveAs_HTML *)
procedure TMainForm.WebBrowser1DownloadComplete(Sender: TObject);
begin
if (WebBrowser1.Document<>nil)AND NOT(WebBrowser1.busy) then begin
WB_SaveAs_HTML(WebBrowser1,'test.html');
//myStringList.loadFromFile('test.html'); //process it.
end;
end;
请注意,某些MIME(“文件”)类型(如JSON)会在IE中显示“另存为...”对话框,从而停止阅读并需要手动干预。