WebBrowser コントロール (ActiveX InternetExplorer) を介してページのソース コードを取得するにはどうすればよいですか?
XML ドキュメント「foo.xml」があります。
var
Web: TWebBrowser;
begin
...
Web.Navigate("foo.xml");
// How can I get source code thru WebBrower control<----
...
end;
WebBrowser コントロール (ActiveX InternetExplorer) を介してページのソース コードを取得するにはどうすればよいですか?
XML ドキュメント「foo.xml」があります。
var
Web: TWebBrowser;
begin
...
Web.Navigate("foo.xml");
// How can I get source code thru WebBrower control<----
...
end;
WebBrowser コントロールを使用してページの HTML 全体にアクセスするには、次のようにします。
Web.Document.All[0].OutterHtml;
うまく機能する別の方法は、Synapseを使用することです。シナプス呼び出し HttpGet を使用して初期リソース (ソース コードを提供) を取得し、必要に応じて操作します。
別のオプションとして、EmbeddedWBコンポーネントを使用する方法があります。これは、標準の Delphi コンポーネントよりも多くの Web ブラウザのプロパティと機能を公開し、それでも Web ブラウザ内で実行するという要件に適合します。
WebBrowser1.Navigate() は、Windows OS に組み込まれている 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;
JSON などの一部の MIME (「ファイル」) タイプでは、IE で [名前を付けて保存...] ダイアログが表示され、読み取りが停止し、手動での介入が必要になることに注意してください。
これは簡単だと思ったのですが、忘れられているようです。ただし、TidHTTP コントロールを使用すると簡単に実行できます。
MyPage := IdHTTP1.Get('www.google.com');
私はそれがあなたが望むものではないことを知っていますが、役立つかもしれません.
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 オブジェクトです。