線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:5223
推到 Plurk!
推到 Facebook!

OLE 連接IE 取得網頁內容

答題得分者是:aftcast
juneo
高階會員


發表:103
回覆:190
積分:118
註冊:2004-05-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2013-08-20 10:45:10 IP:1.167.xxx.xxx 訂閱
我的問題是,當我控制網頁點選SUBMIT後,轉跳到結果網頁
請問各位大大我如何取得IE網頁的HTML
然後我要進行文字擷取,但是我試了很多方法都不知道怎麼取得網頁內容的文字部份

[code cpp]
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Variant vBrowser;
try
{
// 創建一個IE物件
vBrowser = Variant::CreateObject("InternetExplorer.Application");
}
catch(...)
{
ShowMessage("IE Loading fail");
vBrowser = Unassigned;

return;
}

AnsiString strUrl = "http://clickfate.com.tw/fate/fateluckynumber_yhp.phtml?time_num=5";

vBrowser.OleProcedure("Navigate", strUrl.c_str());
vBrowser.OlePropertySet("Width", 800);
vBrowser.OlePropertySet("Height", 600);
vBrowser.OlePropertySet("Visible", true);

// 等待流覽器打開頁面完畢
while(vBrowser.OlePropertyGet("Busy"))
Application->ProcessMessages();

Variant vDoc = vBrowser.OlePropertyGet("document");
Variant vAllTag = vDoc.OlePropertyGet("All");

// 填充用戶名框
//vAllTag.OlePropertyGet("email").OlePropertySet("InnerText", "用戶名@sohu.com");

// 填充密碼框
//vAllTag.OlePropertyGet("num_input").OlePropertySet("InnerText", "2700");
vAllTag.OleFunction("item", 565).OlePropertySet("InnerText", "2700");

// 點擊submit, 由於這個按鈕沒有Name也沒有ID, 所以只能通過遍歷, 找到其索引, 然後...
// 至於遍歷的代碼, 我沒有貼出來.
vAllTag.OleFunction("item", 567).OleProcedure("click");
//vAllTag.OlePropertyGet("SUBMIT").OleProcedure("click");

//-取得結果網頁的文字-----------問題在這---------------------
while(vBrowser.OlePropertyGet("Busy"))
Application->ProcessMessages();

vDoc = vBrowser.OlePropertyGet("Document");
//vDoc.OlePropertyGet("body").OleFunction("insertAdjacentHTML","AfterBegin","大家好!auleaf");
Variant vBody = vDoc.OlePropertyGet("body");
String str = String(vBody.pcVal);
String str1 = String(vBody.AsType(varString));
Memo1->Lines->Add(str);
Memo1->Lines->Add(str1);
//-取得網頁文字結束---------------------------------
vDoc = Unassigned();
vBrowser = Unassigned();

}
//---------------------------------------------------------------------------

[/code]

aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2013-08-21 22:32:17 IP:114.32.xxx.xxx 訂閱
改用indy元件來處理好像比較合你要的東西。我初步看一下是這樣的!

indy的http clinet 元件的post,或get等方法…詳細查google或ktop,應該會有。


------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2013-08-21 22:32:35, 註解 無‧
juneo
高階會員


發表:103
回覆:190
積分:118
註冊:2004-05-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2013-08-22 11:12:33 IP:1.167.xxx.xxx 訂閱
我之前就是用indy元件來處理,但是因為那個網頁裡面輸入的元件與From都沒有設定NAME
所以用indy元件我無法輸入資料後取得結果,
用IE OLE的方式是有找到透過ID來輸入資料與發送按鈕


===================引 用 aftcast 文 章===================
改用indy元件來處理好像比較合你要的東西。我初步看一下是這樣的!

indy的http clinet 元件的post,或get等方法…詳細查google或ktop,應該會有。


aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2013-08-23 10:26:06 IP:114.32.xxx.xxx 訂閱
照你上面例子中的網址,我看是有name,而且可行的…除非我誤會。你有翻那樣的html原始碼來看嗎?

===================引 用 juneo 文 章===================
我之前就是用indy元件來處理,但是因為那個網頁裡面輸入的元件與From都沒有設定NAME
所以用indy元件我無法輸入資料後取得結果,
用IE OLE的方式是有找到透過ID來輸入資料與發送按鈕


===================引 用 aftcast 文 章===================
改用indy元件來處理好像比較合你要的東西。我初步看一下是這樣的!

indy的http clinet 元件的post,或get等方法…詳細查google或ktop,應該會有。


------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
juneo
高階會員


發表:103
回覆:190
積分:118
註冊:2004-05-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2013-08-23 15:07:08 IP:1.167.xxx.xxx 訂閱

[code xml]
<FORM ACTION="/cgi-bin/fateluckynumber_yhp/fateluckynumber_yhp.cgi" METHOD=post><br /> <INPUT TYPE="hidden" NAME="time_num" VALUE=""><br />

請輸入您要鑑定的號碼




<INPUT TYPE="text" NAME="num_input" SIZE=20 MAXLENGTH=20 VALUE=""></font>
[/code]


我指的是FORM 沒有NAME 我用物件處理的時候不是要指定FORM的NAME?
還是可以不用指定就可以直接以 num_input 來輸入?
我找到的方是以OLE方式是需要先指定FORM NAME 才有辦法找到 INPUT,
如果有不同的方法,請指教一下,感恩

編輯記錄
juneo 重新編輯於 2013-08-23 15:08:18, 註解 無‧
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2013-08-23 16:51:15 IP:114.32.xxx.xxx 訂閱
嗯,用indy,完全不需要知道form是什麼name,唯一要知道的是要輸入的那些"元件"的name,比如input_num?。
關鍵是

http://xxxxxxxxxxxxx//cgi-bin/fateluckynumber_yhp/fateluckynumber_yhp.cgi

上面的xxxx的後面是form上的那個。

我極度肯定用indy來處理就ok,而且符合你的要求!
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2013-08-23 16:54:21, 註解 無‧
juneo
高階會員


發表:103
回覆:190
積分:118
註冊:2004-05-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2013-08-23 23:11:26 IP:59.120.xxx.xxx 訂閱
大大可以發個好心,給我一個範例的代碼嗎?
非常感謝。
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2013-08-27 00:46:43 IP:114.42.xxx.xxx 訂閱
你好,最近實在是自己工作非常的忙,恐無法很快的給你例子。

不過,請先說一下你用的c builder是什麼版次的,才方便在時間充裕一點的時候給你例子專案。

又或者,當別的網友提供,或是你已經自己找到答案時才請在此留言!

感謝!

===================引 用 juneo 文 章===================
大大可以發個好心,給我一個範例的代碼嗎?
非常感謝。
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
juneo
高階會員


發表:103
回覆:190
積分:118
註冊:2004-05-13

發送簡訊給我
#9 引用回覆 回覆 發表時間:2013-08-27 14:28:23 IP:1.167.xxx.xxx 訂閱
我是用 BCB 6.0 + win XP
您有空再幫忙就可以了,我只是想學習一下這個OLE寫法更多一些,
以前沒遇到這個問題,最近遇到,果然學無止境
系統時間:2024-04-25 0:09:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!