如何在一網頁持續進行搜尋並取出想要之資料? |
|
vbkiller
一般會員 發表:65 回覆:28 積分:18 註冊:2007-03-13 發送簡訊給我 |
我是醫院藥師,每個月有一煩惱之工作那就是修改醫院藥品及特殊材料之健保價,我醫院藥品約有500項,特殊材料約有100項,而我目前作法是用ie到健保局之搜尋網頁,然後輸入我醫院每一項藥品之藥品代號(或特殊材料代號),等結果網頁出現我就先用小紙條記錄下來,之後到醫院藥品資料庫去修改健保價(如果健保價有變動),但600項藥品及特殊材料之查詢就要耗掉我兩天的時間,但有變動健保價通常不到100項,但又不得不要全部查詢,請教大家能透過寫程式來完成嗎?
ps: 搜尋結果網頁似乎是一個asp檔, 搜尋網頁網址:http://www.nhi.gov.tw/inquire/query1.asp?menu=1&menu_id=8 |
瞬間融化
一般會員 發表:0 回覆:1 積分:0 註冊:2007-03-13 發送簡訊給我 |
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
程式提示
procedure TForm1.Button1Click(Sender: TObject); var data: TIdMultiPartFormDataStream; begin data := TIdMultiPartFormDataStream.Create; try data.AddFormField('Q1_ID', '27392739'); // 藥品代碼 Q1_ID Memo1.Lines.Text := IdHTTP1.Post('http://www.nhi.gov.tw/inquire/query1_list.asp', data); // 接下來要從 Memo1 中找出價格 finally data.Free; end; end; 其實可以將要查詢的代碼全部放 Memo2, 用迴圈去查詢, 傳回網頁放 Memo1 進行分析, Memo3 放每一個查詢結果的價格
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
Clarinet
高階會員 發表:9 回覆:97 積分:126 註冊:2002-05-08 發送簡訊給我 |
當然可以,只是要自己寫程式來拆解該網站的查詢內容。
一般,我都是用WebBrowser來做,透過它即有的物件架構來層層解析,此方式較方便,也較容易,只是前提是你要瞭解其物件架構,才不會不知要如何做。其物件架構可至MSDN查詢。 另一個做法,也就是用IdHTTP去取得原始的HTML檔案回來解析,此方式,我個人覺得較不方便使用。因為,要自己去解析HTML。 且個人覺得此只適用於較簡單的HTML網頁。 這二種方式,之前都有人POST過,所以,你可搜尋一下,會找到許多的文章。 如:第一種方式,可搜尋:WebBrowser、IHTMLDocument2、IHTMLDocument3、GetElementByID……等等。 另一種最好的做法,我是覺得,該網站如果能提供一個Web Service的話,那就不需要這麼麻煩了。 只是,對方可能都不會提供,因為,這沒在他們的功能需求之內。
------
GPS(全球衛星定位系統) http://www.allgps.com |
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
|
vbkiller
一般會員 發表:65 回覆:28 積分:18 註冊:2007-03-13 發送簡訊給我 |
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
|
vbkiller
一般會員 發表:65 回覆:28 積分:18 註冊:2007-03-13 發送簡訊給我 |
|
vbkiller
一般會員 發表:65 回覆:28 積分:18 註冊:2007-03-13 發送簡訊給我 |
Clarinet 你好:
我用webbrowser來做,連到http://www.nhi.gov.tw/inquire/query1.asp?menu=1&menu_id=8可以,但要在藥品代號欄位指定一藥品代號並送出頁,總是失敗,你可否用程式碼舉例,謝謝. |
ry_lee
高階會員 發表:368 回覆:251 積分:123 註冊:2002-03-19 發送簡訊給我 |
|
Clarinet
高階會員 發表:9 回覆:97 積分:126 註冊:2002-05-08 發送簡訊給我 |
請參考下面二個連結的作法
http://delphi.ktop.com.tw/board.php?cid=30&fid=67&tid=35576 http://delphi.ktop.com.tw/board.php?cid=30&fid=67&tid=35496 依此類推,其餘的,搜尋一下關鍵字,就會有許多。
------
GPS(全球衛星定位系統) http://www.allgps.com |
vbkiller
一般會員 發表:65 回覆:28 積分:18 註冊:2007-03-13 發送簡訊給我 |
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
您有
uses IdMultipartFormData; 您有放 IdHTTP , Button, Memo1 元件嗎 ? 您的程式碼寫什麼 ? (小弟給您的只是技術層面的做法, 並非幫您把程式寫出來) 錯誤訊息是什麼 ? 小弟測試一下可以正常傳回網頁內容啊 http://www.nhi.gov.tw/inquire/query1.asp 網頁剛剛測試 已經無法用 單一 藥品代號查詢了 ===================引 用 文 章=================== pcboy 你好: 依照你的程式碼去測試,結果不行.
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
Clarinet
高階會員 發表:9 回覆:97 積分:126 註冊:2002-05-08 發送簡訊給我 |
var
Doc, Edit :OleVariant; begin Doc :=WB.Document; Edit :=Doc.GetElementsByName('Q1_ID');//藥品代碼 //取回來的為IHTMLElementCollection 介面, //只有一個"Q1_ID",所以,直接取用第一個,即為"藥品代碼"的物件 Edit :=Edit.item(0); Edit.Value :='123';//此為藥品代碼物件,所以,指定其值 ................. 其餘的請自行測試 或搜尋一下論譠有各種用法。
------
GPS(全球衛星定位系統) http://www.allgps.com |
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
這兩個是抓網頁回來分析的程式, 有 Source Code, 您可以參考
[發表] WhatIsMyIP 顯示電腦的真實 IP ( WAN IP) http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=85382 [發表] GetRealIP 顯示電腦的真實 IP ( WAN IP) http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=85381
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |