Board logo

標題: [發問] 請教MSXML2.XMLHTTP和InternetExplorer的異同 [打印本頁]

作者: 小俠客    時間: 2016-8-24 14:31     標題: 請教MSXML2.XMLHTTP和InternetExplorer的異同

各位好!小弟在這裡看到各位高手的CODE,終於略懂VBA的皮毛,提升日常工作的效率,謝謝大家。但
我對VBA很多地方仍然沒能掌握,希望大家能指教指教。
如果我的程序需要到網站找資料時,我會使用這兩組:
  1. XMLHTTP= CreateObject("MSXML2.XMLHTTP.6.0")
  2. XMLHTTP.Open "GET", URL


  3. objIE = CreateObject("InternetExplorer.Application")
  4. objIE.Navigate URL
複製代碼
依我理解,這兩組代碼是讀取該PAGE的HTML碼
但我對它們有很多疑問:

1) MSXML2.XMLHTTP.6.0 可以用POST 或GET ,前者需要我SEND DATA到網站作查詢,但
http://stock.finance.sina.com.cn/hkstock/finance/02317.html#a4
如果我想改變右面選擇欄的報表類型,是否可以用MSXML2.XMLHTTP.6.0 的POST & SEND的方法?但我沒有研究成功,只能用objIE = CreateObject("InternetExplorer.Application")去操作

2) CreateObject("MSXML2.XMLHTTP.6.0")是否可以完全取代CreateObject("InternetExplorer.Application")?有時候在LOOPING,IE會停止不動,有點麻煩。

3) 在使用CreateObject("InternetExplorer.Application")時,當我填寫了資料再按.Submit後,我會有一段代碼
  1. do until instr(.document.body.innerhtml,"XXX")>0
  2.         sleep 50
  3.         doevents
  4. loop
複製代碼
來判斷該頁面是否已完成讀取(我曾用readyState<>4,但好像失敗),如果當時網速不佳,excel會顯示沒有.document.body.innerhtml的OBJECT(類似的字眼),我需要RERUN代碼才能繼續。即使我用:do until not .document.body.innerhtml is nothing t也會出現ERROR....


4) 我想用這兩組代碼讀取這網站的報價資料,但兩個都不成功,看了讀回來的HTML CODE,股價資料是空的,但我直接看這個網站時,它的HTML CODE是包括報價資料。處理這些網站時有沒有特別的處理技巧?
http://www.etnet.com.hk/www/tc/stocks/realtime/quote.php?code=2317
作者: zyzzyva    時間: 2016-8-24 22:31

回復 1# 小俠客
1、你是用這個連結測試嗎?http://stock.finance.sina.com.cn/hkstock/api/jsonp.php/var%20tableData%20=%20/FinanceStatusService.getFinanceStatusForjs?symbol=02317&financeStatus=1
最後的financeStatus是報表類型。all是全部、zero是年報、1是中報、2是一季報、3是三季報。

4、那種應該都是javscript查詢來的資料,在原始網頁的HTML裡是找不到的。
作者: 小俠客    時間: 2016-8-25 10:02

回復  小俠客
1、你是用這個連結測試嗎?
最後的financeStatus是報表類型。all是全部、zero是年報、1是中 ...
zyzzyva 發表於 2016-8-24 22:31


關於問題1:我不是啦,我沒能研究到這個連結,我是直接用MSXML2.XMLHTTP.6.0到 http://stock.finance.sina.com.cn/hkstock/finance/02317.html#a4
但我不懂如何用POST AND SEND 的方法改動financeStatus的選項,所以我暫時是用CREATEOBJECT("InternetExplorer.Application"),再改動financeStatus 的OBJECT去獲得新數據。
大大很利害,可否教教我如何去得到這個連結?謝謝

關於問題4:現在我處理方法是,CREATEOBJECT("InternetExplorer.Application"),到該網站,重新輸入CODE再SUBMIT,令HTML包含到資料,不過我覺得這個方法有點蠢......
作者: zyzzyva    時間: 2016-8-25 15:07

回復 3# 小俠客 如果是用Chrome可以按F12開啟開發人員工具,再按F5重讀網頁觀察。Firefox也有類似的工具。IE好像沒有,可以裝Fidller,也很多人用。問題4直接用瀏覽器載入應該是最單純了,如果能找到他查詢的javascript也許可以不用載入整個網頁,不然目前我也沒有更好的辦法。
作者: 小俠客    時間: 2016-8-29 11:59

回復 4# zyzzyva


    原來有這樣的工具,謝謝你的指教




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)