返回列表 上一主題 發帖

[發問] 網頁資料下載成pdf異常地慢?

使用〔XMLHTTP〕語法,有時會有如下狀況:
第1次執行慢 > 類似從傳真機接收〔正本〕文件的〔副本〕,從〔無〕到〔有〕,總是要等些時間
第2次以後執行快 > 只是拿到〔傳真副本〕的〔影印本〕
如果〔正本〕每天更新,還是必須重新執行傳真動作,取得最新的〔副本〕,耗費的時間相同,
假如每次下載都是要取得最新版本資料,若下載速度異常的快,必須去確認是否為最新!

在某些PC上,即使關掉網路連線,還是可以下載文件,因為〔傳真副本〕還在暫存區,抓到的文件,有人形容為〔鬼影〕!
網上去查一下〔GET〕及〔POST〕的差別,但改用〔POST〕有時還是不夠精確!

以上純為個人實作經驗,並非一定是如此,僅供參考!

TOP

<測試碼>
Sub 測試_1()
Dim QcURL$, uTxt$, X1&, X2&
On Error GoTo 101
QcURL = "http://www.post.gov.tw/post/internet/index.jsp"
With CreateObject("Microsoft.XMLHTTP")
     .Open "post", QcURL, False
     .send
     uTxt = .ResponseText
End With
'---------------------------
T1 = "台灣時間:</span> <span class='time'>"
T2 = "GMT+8:00  "
X1 = InStr(uTxt, T1)
If X1 > 0 Then X2 = InStr(X1 + Len(T1), uTxt, T2)
If X2 = 0 Then Exit Sub
uTxt = Mid(uTxt, X1 + Len(T1), X2 - X1 - Len(T1))
'---------------------------
uTxt = Replace(Replace(uTxt, "&nbsp", ""), ";", "")
If Len(uTxt) = 0 Then Exit Sub
[A65536].End(xlUp)(2) = uTxt
101: End Sub

請再複製一份,改為〔Sub 測試_2()〕,且將〔post〕改為〔get〕!

檢測執行:
1.先執行幾次〔測試1〕,看文字串後面的時間是否有更新?__102年5月19日星期日12:52:24
2.再執行幾次〔測試2〕
3.接著再執行〔測試1〕

以我的PC測試:
在未執行GET前,POST都可以取得最新時間;執行GET後,後續都是抓到舊時間,即使再返回執行POST也是一樣!
不過您的PC並不一定如此,參考即可!

TOP

回復 11# lalalada

1.dim 後面的$和&是指定型別的意思吧?
__可以參考超級版主的說明:http://forum.twbts.com/redirect. ... 22366&ptid=3820

2.〔get〕〔post〕為何有差?
__不是excel及vba正科,根本不懂其機制,看過超級版主的程式碼非常道地而專業,或許可以提供專業知識分享!
  另,在網址上加入變動參數,使用〔get〕也可抓出最新數據,但可能無法適用所有的網址,例如:
  QcURL = "http://www.post.gov.tw/post/internet/index.jsp?" & Rnd
  這也是知其然而不知其所以然,大概ie有自動校正網址的原因吧!(猜)

3.測試碼因從幾個子程序中湊成,一時將就;經貴手精簡後,看起來清爽許多!^ ^
  因為有反覆取指定字串需求,一般會以子程序或function來呼叫,約略如下:
Sub 取得指定字串()
Dim uTxt$, T1$, T2$
uTxt = "所在地:台灣,日期:102年5月19日,星期別:星期日,時間:12:52:24(TM)"
T1 = "日期:": T2 = ",星期"
MsgBox Get_String(uTxt, T1, T2)
T1 = "時間:": T2 = "(TM)"
MsgBox Get_String(uTxt, T1, T2)
End Sub

Function Get_String(xStr$, xT1$, xT2$) As String
Dim X1%, X2%
X1 = InStr(xStr, xT1)
If X1 > 0 Then X2 = InStr(X1 + Len(xT1), xStr, xT2)
If X2 = 0 Then Exit Function
Get_String = Mid(xStr, X1 + Len(xT1), X2 - X1 - Len(xT1))
End Function

非正統的程式碼,看看就好!

TOP

        靜思自在 : 布施如播種,以歡喜心滋潤種子,才會發芽。
返回列表 上一主題