返回列表 上一主題 發帖

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

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

使用最普遍的方法Microsoft.XMLHTTP +ADODB.STREAM
下載 https://mm.jpmorgan.com/OpenPubServlet?action=latest&publication=9000024 的pdf檔
但是速度卻驚人的慢... 接近30秒
用相同方法下載其他資料 如 http://ichart.finance.yahoo.com/table.csv?s=2498.TW&d=4&e=10&f=2013&g=d&a=2&b=26&c=2002&ignore=.csv
只需要一瞬間(因為檔案格式的關係嗎? pdf v.s. csv)
雖然有下載成功 可是其中發生了什麼問題 能改善嗎?
謝謝!
  1. Sub download1()
  2. 'On Error Resume Next
  3. DataDate = Year(Date) & "-" & Format(Month(Date), "00") & "-" & Day(Date)
  4. myURL = "https://mm.jpmorgan.com/OpenPubServlet?action=latest&publication=9000024"


  5. Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
  6. WinHttpReq.Open "GET", myURL, False
  7. WinHttpReq.Send

  8. myURL = WinHttpReq.ResponseBody
  9. If WinHttpReq.Status = 200 Then
  10.     Set oStream = CreateObject("ADODB.Stream")
  11.     oStream.Open
  12.     oStream.Type = 1
  13.     oStream.Write WinHttpReq.ResponseBody
  14.     oStream.SaveToFile ("D:\Dropbox\Stock\Research Reports\JPM Top Stories\JPM_J.P._Morgan_FTM_10_M_" & DataDate & ".pdf")
  15.     oStream.Close
  16. End If
  17. 'On Error GoTo 0

  18. End Sub
複製代碼

回復 2# mark15jill

感謝回復!
那請問有沒有辦法能改善這現象呢?

而且我注意到如果重複跑程式碼
第二次之後就能達到瞬間執行完畢@@

TOP

回復 4# mark15jill

了解~
感謝指教:)
請問...重複跑兩次(遮蔽第一次)是什麼意思(?)
這樣跑第一次的時候還是要一樣久不是嗎?
既然網址都一樣
有沒有辦法把暫存檔留下來呢?

TOP

回復 7# 准提部林

你好! 感謝回覆
我大概會用POST跟GET兩種方法取得資料
個人理解POST是有發出訊息給對方伺服器
伺服器再根據訊息給予對應的資料
GET則是單純存取
請問這樣的理解正確嗎?
又POST不精確的意思是什麼...?

TOP

回復 6# mark15jill

你好~感謝回覆!
我也有注意到網址結尾並不是PDF
請問有沒有辦法得到文件的真實位址呢?

TOP

回復 10# 准提部林

嗨~
感謝回覆!
看完這些程式碼又多學了一些東西 :P
dim 後面的$和&是指定型別的意思吧?

經過測試
使用get只有第一次有效
post則能一直獲取當前時間
不過get後post依然有效
可是不了解為什麼....?

另外一時興起就試著把程式碼簡化如下XD
  1. Sub 測試_1()
  2. Dim QcURL$
  3. On Error GoTo 101
  4. QcURL = "http://www.post.gov.tw/post/internet/index.jsp"
  5. With CreateObject("Microsoft.XMLHTTP")
  6.      .Open "post", QcURL, False
  7.      .send
  8.      test1 = Split(Split(.responseText, "台灣時間:</span> <span class='time'>&nbsp;")(1), "&nbsp;GMT+8:00  </span></td>")(0)
  9. End With
  10. [A65536].End(xlUp)(2) = Replace(Replace(test1, "&nbsp", ""), ";", "")
  11. 101: End Sub
複製代碼

TOP

回復 12# 准提部林

哦哦了解! 感謝你~

加入亂數有效是因為?後面的東西就是使用post時丟都進去的參數
既然丟了參數
對方伺服器就會回應 所以可以取得最新資料
因為它實際上就跟post一樣
不適用的情況同理

看來get是去取得暫存檔(?)

TOP

        靜思自在 : 君子如水,隨方就圓,無處不自在。
返回列表 上一主題