全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:8018
推到 Plurk!
推到 Facebook!

(BCB)請問如何取得網路的資料EX:奇摩的股票資料

答題得分者是:david69
myfather
一般會員


發表:4
回覆:9
積分:2
註冊:2007-04-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-27 17:30:03 IP:203.64.xxx.xxx 訂閱
如何利用BCB的元件去取得例如http://tw.stock.yahoo.com/q/q?s=2301....我只想取得以下的資料...要如何取得..謝謝大大

<form name="orderform"> </form>
股票 代號 時間 成交 買進 賣出 漲跌 張數 昨收 開盤 最高 最低 個股資料
2301光寶科 加到投資組合 14:30 39.30 39.30 39.35 ▽0.55 4,592 39.85 39.50 39.60 39.05 成交明細 技術 新聞 基本 籌碼
台証證券下單 <input ="COLOR: rgb(255,237,239); BACKGROUND-COLOR: rgb(255,237,239)" type="radio" name="bs" value="5" /> <input size="5" name="vol" type="text" /> <input 'I', '/fcgi-bin/orderpage.fcg');" type="button" value="送出" /> 零股交易


myfather
一般會員


發表:4
回覆:9
積分:2
註冊:2007-04-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-27 17:37:08 IP:203.64.xxx.xxx 訂閱
抱歉...貼的不是很好...就是要取得股票代號...時間...成交.....
2301 14.30 39.30....................

謝謝大大
david69
一般會員


發表:1
回覆:19
積分:19
註冊:2003-06-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-06-06 05:33:03 IP:76.81.xxx.xxx 訂閱
這是針對yahoo上的某單一股票做類似的處理。只是抓的是漲跌欄,並用不同的圖檔來顯示,用游標移到圖上即可顯示其值。你參考看看吧!
<textarea class="cpp" rows="10" cols="60" name="code">//--------------------------------------------------------------------------- #include #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { int StrPos, i; String UD; char *ptrUD; // Label1->Caption = ""; NMHTTP1->Get("http://tw.stock.yahoo.com/q/q?s=2425"); //"http://tw.stock.yahoo.com/q/ts?s=2425"); // Memo1->Text = NMHTTP1->Body; StrPos = NMHTTP1->Body.Pos("nowrap>"); Image1->Hint = NMHTTP1->Body.SubString(StrPos 10,5); // Label1->Caption = (NMHTTP1->Body.SubString(StrPos 10,5)); StrPos = NMHTTP1->Body.Pos("nowrap>Caption = Label1->Caption (" ") (NMHTTP1->Body.SubString(StrPos 27,7)); Image1->Hint = Image1->Hint (" ") (NMHTTP1->Body.SubString(StrPos 27,7)); UD = (NMHTTP1->Body.SubString(StrPos 27,2)); if (StrComp(UD.c_str() ,"△") == 0) Image1->Picture->LoadFromFile("Smile.bmp"); else if (StrComp(UD.c_str() ,"▽") == 0) Image1->Picture->LoadFromFile("Sweat.bmp"); else if (StrComp(UD.c_str() ,"▼") == 0) Image1->Picture->LoadFromFile("too_sad.bmp"); else if (StrComp(UD.c_str() ,"▲") == 0) Image1->Picture->LoadFromFile("big_smile.bmp"); else Image1->Picture->LoadFromFile("boss.bmp"); } //--------------------------------------------------------------------------- void __fastcall TForm1::NMHTTP1PacketRecvd(TObject *Sender) { StatusBar1->SimpleText = IntToStr(NMHTTP1->BytesRecvd) " bytes of " IntToStr(NMHTTP1->BytesTotal) " received"; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormActivate(TObject *Sender) { // Form1->BorderStyle = bsSizeable; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { Image1->Picture->LoadFromFile("Boss.bmp"); NMHTTP1->TimeOut = 90000; NMHTTP1->InputFileMode = false; NMHTTP1->OutputFileMode = false; NMHTTP1->ReportLevel = Status_Basic; Timer1-> } //--------------------------------------------------------------------------- </textarea>
myfather
一般會員


發表:4
回覆:9
積分:2
註冊:2007-04-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-06-10 13:15:26 IP:218.169.xxx.xxx 訂閱
不好意思...請教一下...您程式碼最後一行是?...timer......?
myfather
一般會員


發表:4
回覆:9
積分:2
註冊:2007-04-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-06-10 13:17:48 IP:218.169.xxx.xxx 訂閱
Timer1->Enabled=true; ?
myfather
一般會員


發表:4
回覆:9
積分:2
註冊:2007-04-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-06-10 15:58:16 IP:203.64.xxx.xxx 訂閱
以大大的例子,StrPos = NMHTTP1->Body.Pos("nowrap>"); 這是要抓成交的,
那如果我想抓像是買進,賣出等,,
int buy ,sell
buy=NMHTTP1->Body.Pos("nowrap>");//會抓到買進的價格ex7.89
sell=NMHTTP1->Body.Pos("nowrap>");//這個也會抓到買進的價格耶,請教大大,,要怎麼才能抓到賣出張數,昨收.....的價格
感謝.....
david69
一般會員


發表:1
回覆:19
積分:19
註冊:2003-06-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-06-27 15:12:13 IP:76.81.xxx.xxx 訂閱
1. 那行timer可清掉不要。
2. 以yahoo股票網頁原始碼:
<textarea class="xml" rows="10" cols="60" name="code"><table border=0 cellSpacing=0 cellpadding="0" width="750">
<form name=orderform> <input type=hidden name="df" value=""> <input type=hidden name="stkid" value="2303"> <input type=hidden name="stkname" value="聯電"> </textarea><br /> 你抓到的第一個”nowrap>”後的資料應是時間。簡單的方式就是用NMHTTP1->Body.SubString將第一個找到”nowrap>”的位置取出一定的長度字串(例如取到”成交明細”為止)。再用NMHTTP1->Body.Pos及NMHTTP1->Body.SubString(或NMHTTP1->Body.Delete)交互使用, 一個個的將”nowrap>”後的資料取出,就不管是買進,賣出,最高,最低都隨你取了。")-1)); body_5483=body_5483.Delete(1,body_5483.Pos("")-1)); if(body_5483.Pos("△")>0) //漲 { body_5483=body_5483.Delete(1,body_5483.Pos("△")-1); item_5483->SubItems->Add(body_5483.SubString(1,body_5483.Pos("nowrap>")-55)); } if(body_5483.Pos("▽")>0) //跌 { body_5483=body_5483.Delete(1,body_5483.Pos("▽")-1); item_5483->SubItems->Add(body_5483.SubString(1,body_5483.Pos("")-1)); body_5483=body_5483.Delete(1,body_5483.Pos("")-1)); body_5483=body_5483.Delete(1,body_5483.Pos("")-1)); body_5483=body_5483.Delete(1,body_5483.Pos("")-1)); body_5483=body_5483.Delete(1,body_5483.Pos("")-1)); </textarea>
編輯記錄
GGL 重新編輯於 2007-07-13 16:59:49, 註解 無‧
GGL 重新編輯於 2007-07-13 17:03:04, 註解 無‧
GGL 重新編輯於 2007-07-13 17:28:23, 註解 無‧
GGL 重新編輯於 2007-07-13 17:30:47, 註解 無‧
股票
代號
時間 成交 買進 賣出 漲跌 張數 昨收 開盤 最高 最低 個股資料
2303聯電
加到投資組合
13:30 19.85 19.85 19.90 0.00 33,364 19.85 19.85 20.00 19.80 成交明細
技術 新聞
基本
籌碼
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-07-13 16:20:07 IP:140.118.xxx.xxx 未訂閱
我是用下面的方式,但是我發現...之後好像會被yahoo導向錯誤頁,可能是我嘗試連線太多次 

<textarea class="cpp" rows="10" cols="60" name="code">AnsiString body_5483; //中美晶 NMHTTP1->Get("http://tw.stock.yahoo.com/q/q?s=5483"); body_5483=NMHTTP1->Body; body_5483=body_5483.Delete(1,body_5483.Pos("
") 43); TListItem *item_5483=suiListView1->Items->Add(); item_5483->Caption="5483中美晶"; item_5483->SubItems->Add(body_5483.SubString(1,5)); body_5483=body_5483.Delete(1,body_5483.Pos("") 46); item_5483->SubItems->Add(body_5483.SubString(1,body_5483.Pos("")-1)); body_5483=body_5483.Delete(1,body_5483.Pos("") 43); item_5483->SubItems->Add(body_5483.SubString(1,body_5483.Pos("") 43); item_5483->SubItems->Add(body_5483.SubString(1,body_5483.Pos("")-17)); } if(body_5483.Pos("△")<=0 && body_5483.Pos("▽")<=0) { body_5483=body_5483.Delete(1,body_5483.Pos("") 19); item_5483->SubItems->Add(body_5483.SubString(1,body_5483.Pos("")-17)); } body_5483=body_5483.Delete(1,body_5483.Pos("") 43); item_5483->SubItems->Add(body_5483.SubString(1,body_5483.Pos("") 43); item_5483->SubItems->Add(body_5483.SubString(1,body_5483.Pos("") 43); item_5483->SubItems->Add(body_5483.SubString(1,body_5483.Pos("") 43); item_5483->SubItems->Add(body_5483.SubString(1,body_5483.Pos("") 43); item_5483->SubItems->Add(body_5483.SubString(1,body_5483.Pos("
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-07-13 16:21:37 IP:140.118.xxx.xxx 未訂閱
奇怪,這是bug還是怎樣,怎麼頁面會亂掉...
而且文字行數順序完全混亂
david69
一般會員


發表:1
回覆:19
積分:19
註冊:2003-06-11

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-08-07 18:09:30 IP:76.81.xxx.xxx 訂閱
對不起,好些日子沒上來了。我記得我好像也有遇過被yahoo導向錯誤網頁,有點久了,記不是很清楚。應該就是你說的資料抓得太頻繁。yahoo有時後段資料來得慢,在還沒送完時,你又去request新資料,好像就會被導過去。你另一個問題就看不懂了,無法理解你所說的網頁亂掉是什麼? 可能是你過濾後抓的資料與預期不同吧!? 可考慮是否為換行符號 cr/lf所產生的問題呢? 因為換行符號在你看網頁原始碼時無法看出,但事實上它佔兩個bytes,這就可能會影響你過濾key words的結果了! 給你參考!
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-08-14 16:03:33 IP:140.118.xxx.xxx 未訂閱
我的網頁亂掉是因為我在發表程式碼的時候弄錯了,導致po上來的文章有問題,之後才發現弄錯了

===================引 用 david69 文 章===================
對不起,好些日子沒上來了。我記得我好像也有遇過被yahoo導向錯誤網頁,有點久了,記不是很清楚。應該就是你說的資料抓得太頻繁。yahoo有時後段資料來得慢,在還沒送完時,你又去request新資料,好像就會被導過去。你另一個問題就看不懂了,無法理解你所說的網頁亂掉是什麼? 可能是你過濾後抓的資料與預期不同吧!? 可考慮是否為換行符號 cr/lf所產生的問題呢? 因為換行符號在你看網頁原始碼時無法看出,但事實上它佔兩個bytes,這就可能會影響你過濾key words的結果了! 給你參考!
系統時間:2024-08-01 22:24:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!