6

WebBrowser コントロール (ActiveX InternetExplorer) を介してページのソース コードを取得するにはどうすればよいですか?

XML ドキュメント「foo.xml」があります。

var
 Web: TWebBrowser;
begin
 ...
 Web.Navigate("foo.xml");
 // How can I get source code thru WebBrower control<----
 ...
end;
4

7 に答える 7

1

WebBrowser コントロールを使用してページの HTML 全体にアクセスするには、次のようにします。

Web.Document.All[0].OutterHtml;
于 2009-05-19T14:38:26.543 に答える
1

うまく機能する別の方法は、Synapseを使用することです。シナプス呼び出し HttpGet を使用して初期リソース (ソース コードを提供) を取得し、必要に応じて操作します。

別のオプションとして、EmbeddedWBコンポーネントを使用する方法があります。これは、標準の Delphi コンポーネントよりも多くの Web ブラウザのプロパティと機能を公開し、それでも Web ブラウザ内で実行するという要件に適合します。

于 2009-03-25T17:13:24.710 に答える
1

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 で [名前を付けて保存...] ダイアログが表示され、読み取りが停止し、手動での介入が必要になることに注意してください。

于 2011-03-25T13:30:10.000 に答える
1

これは簡単だと思ったのですが、忘れられているようです。ただし、TidHTTP コントロールを使用すると簡単に実行できます。

MyPage := IdHTTP1.Get('www.google.com');

私はそれがあなたが望むものではないことを知っていますが、役立つかもしれません.

于 2009-03-24T13:19:18.150 に答える
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 オブジェクトです。

于 2009-11-19T14:36:31.080 に答える