OLE 連接IE 取得網頁內容 |
答題得分者是:aftcast
|
juneo
高階會員 發表:103 回覆:190 積分:118 註冊:2004-05-13 發送簡訊給我 |
我的問題是,當我控制網頁點選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 發送簡訊給我 |
改用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 發送簡訊給我 |
||||||||||
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
照你上面例子中的網址,我看是有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 發送簡訊給我 |
[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 發送簡訊給我
|
嗯,用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 發送簡訊給我
|
aftcast
|
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我
|
你好,最近實在是自己工作非常的忙,恐無法很快的給你例子。
不過,請先說一下你用的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 發送簡訊給我
|
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |