使用WebBrowser控制元件獲取網頁原始碼的方法

一劍平江湖發表於2013-12-10

使用WebBrowser控制元件獲取網頁原始碼的方法,網上有很多介紹,但絕大多數的人都是使用以下的方法獲取:

(WebBrowser1.Document as IHtmlDocument2).body.outerHtml;

我以前也是這麼用的,這種方法的美中不足就是隻能獲取網頁<body>與</body>之間的網頁原始碼,而<body>之外如<head>部分的網頁原始碼就獲取不到了,本人在網上搜了很久,終於找到解決方法。好的東西不敢獨享,現將這種方法共享出來:

procedure TForm1.Button1Click(Sender: TObject);
var
  ole_index, oleObj: OleVariant;
  i: integer;
begin
  if WebBrowser1.Busy then Exit;  //網頁載入中,退出。
  Memo1.Lines.Clear;
  //獲取主框架網址及網頁原始碼
  Memo1.Lines.Add(WebBrowser1.OleObject.document.url);
  Memo1.Lines.Add(WebBrowser1.OleObject.document.documentElement.outerHTML);
  Memo1.Lines.Add(' '); Memo1.Lines.Add(' '); //新增空行
  //迴圈獲取每一個子框架網址及網頁原始碼
  for i := 0 to WebBrowser1.OleObject.document.frames.length - 1 do
  begin
    ole_index := i;
    oleObj := WebBrowser1.OleObject.document.frames.item(ole_index);
    Memo1.Lines.Add(oleObj.document.url);
    Memo1.Lines.Add(oleObj.document.documentElement.outerHtml);
    Memo1.Lines.Add(' '); Memo1.Lines.Add(' '); //新增空行
  end;
end;

相關文章