Delphi自動提交網頁表單和獲取框架網頁原始碼
這兩個問題的實現原理其實是差不多的,所以放在一起介紹,單元MSHtml封裝了我們需要的功能。
首先,新建一個DELPHI工程,在USES部分新增MSHtml單元的引用。
然後,在窗體上放置一個TWebBrowser控制元件和四個按鈕。
最後,編寫四個按鈕的響應程式碼:
1. 自動提交網頁表單
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('http://www.baidu.com');
end;procedure TForm1.Button2Click(Sender: TObject);
var
doc: IHTMLDocument2;
oleObj: OleVariant;
begin
doc := WebBrowser1.Document as IHTMLDocument2;
if doc = nil then Exit;
oleObj := doc.all.item('wd', 0) as IHTMLElement2;
//網頁有一個名為“wd”的文字框:<input type="text" name="wd" id="kw" maxlength="100">
oleObj.Value := 'Delphi'; //為文字框賦值
oleObj := doc.all.item('su', 0) as IHTMLElement2;
//網頁有一個ID為“su”的按鈕:<input type="submit" value="百度一下" id="su">
oleObj.Click; //點選按鈕,提交表單
end;
2. 獲取框架網頁原始碼
procedure TForm1.Button3Click(Sender: TObject);
begin
WebBrowser1.Navigate('http://含有框架的網頁URL');
end;procedure TForm1.Button4Click(Sender: TObject);
var
doc, framedoc: IHTMLDocument2;
frame_dispatch: IDispatch;
ole_index: OleVariant;
i: Integer;
begin
doc := WebBrowser1.Document as IHTMLDocument2;
if doc = nil then Exit;
for i := 0 to doc.frames.length - 1 do
begin
ole_index := i;
frame_dispatch := doc.frames.item(ole_index);
if frame_dispatch = nil then Continue;
framedoc := (frame_dispatch as IHTMLWindow2).document;
if framedoc = nil then Continue;
ShowMessage(framedoc.body.innerHTML);
end;
end;
3. 獲取網頁所有連結
procedure TForm1.Button1Click(Sender: TObject);
var
elem: IHTMLElement;
coll: IHTMLElementCollection;
i: integer;
url, title: string;
begin
coll := (WebBrowser1.Document as IHTMLDocument2).all;
coll := (coll.tags('a') as IHTMLElementCollection);
for i := 0 to coll.Length - 1 do
begin // 迴圈取出每個連結
elem := (coll.item(i, 0) as IHTMLElement);
url := Trim(string(elem.getAttribute(WideString('href'), 0)));
title := elem.innerText;
ShowMessage(Format('連結標題:%s,連結網址:%s', [title, url]));
end;
end;
相關文章
- QWebView獲取網頁原始碼WebView網頁原始碼
- 獲取含跨域網址的框架網頁的原始碼跨域框架網頁原始碼
- 高效獲取網頁原始碼COM網頁原始碼
- Delphi獲取所有開啟的IE視窗的網頁原始碼網頁原始碼
- c#利用WebClient和WebRequest獲取網頁原始碼C#Webclient網頁原始碼
- .net post提交和獲得html頁面的原始碼HTML原始碼
- 想獲取JS載入網頁的源網頁的原始碼,不想獲取JS載入後的資料JS網頁原始碼
- 使用WebBrowser控制元件獲取網頁原始碼的方法Web控制元件網頁原始碼
- webview獲取網頁titleWebView網頁
- Web網頁表單Web網頁
- **PHP分步表單提交思路(分頁表單提交)PHP
- Delphi通過IE視窗控制程式碼獲取網頁介面(IWebBrowser2)網頁Web
- javascript獲取網頁的高度JavaScript網頁
- [轉帖]利用WebClient和WebRequest類獲得網頁原始碼Webclient網頁原始碼
- js控制頁面顯示和表單提交JS
- JavaScript 獲取網頁尾本程式碼內容JavaScript網頁
- 用phpmailer實現網頁表單提交傳送郵件功能PHPAI網頁
- 爬蟲——網頁爬取方法和網頁解析方法爬蟲網頁
- js/jq 獲取網頁寬高JS網頁
- Python 3.2 獲取中文網頁Python網頁
- python3中編碼如何獲取網頁?Python網頁
- js獲取網頁title標題程式碼例項JS網頁
- 兩種方法獲取網頁編碼python版網頁Python
- iOS專案開發實戰——iOS網路程式設計獲取網頁Html原始碼iOS程式設計網頁HTML原始碼
- ferret 爬取動態網頁網頁
- 爬取知乎單個網頁問題和回答網頁
- iOS專案開發實戰——使用同步請求獲取網頁原始碼iOS網頁原始碼
- js如何獲取網頁的標題JS網頁
- js獲取網頁螢幕寬高JS網頁
- 兒童攝影網-網頁原始碼全網頁原始碼
- 靜態網頁和動態網頁的區別網頁
- 抓取網頁中的原始碼.網頁原始碼
- Postman模擬瀏覽器網頁請求並獲取網頁資料Postman瀏覽器網頁
- js如何獲取網頁尾本程式碼的內容JS網頁
- javascript獲取網頁和螢幕尺寸相關屬性JavaScript網頁
- 網站開發之MyEclipse簡單實現JSP網頁表單提交及傳遞值網站EclipseJS網頁
- Chrome 獲取網頁顏色(文字、圖片)Chrome網頁
- WKWebView 獲取網頁高度,圖片點選檢視,網頁連結點選WebView網頁