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網頁原始碼
- .net post提交和獲得html頁面的原始碼HTML原始碼
- 想獲取JS載入網頁的源網頁的原始碼,不想獲取JS載入後的資料JS網頁原始碼
- 網頁佈局------for表單網頁
- JavaScript 獲取網頁尾本程式碼內容JavaScript網頁
- python3中編碼如何獲取網頁?Python網頁
- 爬蟲——網頁爬取方法和網頁解析方法爬蟲網頁
- 用phpmailer實現網頁表單提交傳送郵件功能PHPAI網頁
- js/jq 獲取網頁寬高JS網頁
- 網站開發之MyEclipse簡單實現JSP網頁表單提交及傳遞值網站EclipseJS網頁
- ferret 爬取動態網頁網頁
- Postman模擬瀏覽器網頁請求並獲取網頁資料Postman瀏覽器網頁
- 爬取知乎單個網頁問題和回答網頁
- 使用 Python 和 Selenium 自動化網頁測試Python網頁
- Chrome 獲取網頁顏色(文字、圖片)Chrome網頁
- WKWebView 獲取網頁高度,圖片點選檢視,網頁連結點選WebView網頁
- 兒童攝影網-網頁原始碼全網頁原始碼
- 爬取外文工業技術期刊網頁原始碼(自用)網頁原始碼
- Chrome 團隊提交補丁:阻止使用者「檢視網頁原始碼」Chrome網頁原始碼
- python四種方式解析網頁獲取頁面中的連結Python網頁
- Selenium自動化測試網頁網頁
- 簡單網頁網頁
- vue 前端框架的網頁是否是不能用 js 和 jquery 獲取元素屬性或修改?Vue前端框架網頁JSjQuery
- 如何自動重新整理網頁?Auto Refresh Page網頁自動重新整理工具分享網頁
- 爬取網頁文章網頁
- selenium模組,web自動化,獲取標籤頁Web
- 網頁開啟自動跳轉另一個網頁怎麼辦、網頁劫持怎麼解決網頁
- php獲取網頁內容的三種方法PHP網頁
- .NET微信網頁開發之網頁授權獲取使用者基本資訊網頁
- ASP.NET 網頁- HTML 表單簡介ASP.NET網頁HTML
- 帝國cms內容頁圖片自動獲取alt和title的方法
- 簡單的網頁登入頁面網頁
- 使用selenium和phantomJS瀏覽器獲取網頁內容的小演示JS瀏覽器網頁
- 網頁程式碼(主頁)(初始版):網頁
- 網站頁面原始碼,前端頁面的最基本組成形式,網頁到底是什麼? 網站開發教程網站原始碼前端網頁
- C#爬取動態網頁上的資訊:B站主頁C#網頁
- 如何實現婚戀app原始碼移動端網頁特效?APP原始碼網頁特效
- 影片直播網站原始碼,flutter 頂部滾動欄頁面網站原始碼Flutter
- html網頁無法自動播放音樂HTML網頁