返回列表 上一主題 發帖

[發問] 網頁資料很長,如何有效率地知道已完整進來

[發問] 網頁資料很長,如何有效率地知道已完整進來

本帖最後由 Scott090 於 2017-11-12 17:01 編輯

'捲動網頁
'''' i 值太小,網頁資料會來不及進來;太大會浪費時間
''''   有何方法可以知道資料已進來齊全而停止;或其他方式取代本方法?
            i = 0
            While i < 50
                .Document.Parentwindow.scrollby 0, 10000 'Move,Scroll IE window down to bottom
                i = i + 1
            Wend

請問那一位前輩幫忙? 先謝謝

以下的例子是資料的長短多寡取決於日期期間的長短,如何做會比較有效率?
  1. '使用 ie,Application 物件
  2. '從 finance.Yahoo.com取得歷史資料
  3. '
  4. Sub getHistoricalData()
  5.         Dim Code
  6.         Code = "AAPL"
  7.         Const mysteryNum = 2209190400#
  8.         Dim ie, DATAar, A$, yyDate
  9.         Dim URL As String
  10.         Dim StartDate, EndDate, timer, tt As Date
  11.         Dim Table As Object, oDoc As Object
  12.         Dim i%, j%, k%
  13.         
  14.         StartDate = "1999/1/2"            '開始日期
  15.         EndDate = Date                          '結束日期,預設為今天

  16.       '轉換為秒鐘數字
  17.     StartDate = DateValue(StartDate) * 86400 - mysteryNum
  18.     EndDate = DateValue(EndDate) * 86400 - mysteryNum
  19.    
  20.    Set ie = CreateObject("InternetExplorer.Application")
  21.         
  22.     With ie
  23.             Application.StatusBar = "打開網頁,等待資料備齊 ....."
  24.             URL = "https://finance.yahoo.com/quote/" & Code & "/history?period1=" & StartDate & "&period2=" & EndDate & "&interval=1d&filter=history&frequency=1d"
  25.             .Visible = True ' False                '顯示 IE否?
  26.             .navigate URL
  27.             Application.Wait Time + #12:00:04 AM#                   '等候網頁4秒鐘
  28.             tt = Time + #12:00:05 AM#
  29.             Do While (.busy Or .readyState <> 4) And Time < tt
  30.                 DoEvents
  31.             Loop
  32.             
  33.             '捲動網頁
  34. '''' i 值太小,網頁資料會來不及進來;太大會浪費時間
  35. ''''   有何方法可以知道資料已進來齊全而停止;或其他方式取代本方法?
  36.             i = 0
  37.             While i < 50
  38.                 .Document.Parentwindow.scrollby 0, 10000 'Move,Scroll IE window down to bottom
  39.                 i = i + 1
  40.             Wend
  41.                         
  42.             Application.StatusBar = "取網頁資料中 .... "
  43.             Set oDoc = .Document.getElementsByTagName("TABLE")(1)
  44.             
  45.             ActiveSheet.Cells.Clear
  46.             ReDim DATAar(oDoc.Rows.Length - 1, 7)
  47.             
  48.             For i = 0 To oDoc.Rows.Length - 2
  49.                     For j = 0 To 6
  50.                           On Error Resume Next
  51.                           DATAar(i + 1, j + 1) = oDoc.Rows(i).Cells(j).innertext
  52.                           If j = 0 And i <> 0 Then
  53.                           
  54.                           ''''    yyDate = CDate("Oct 01, 2017")
  55.                                 A = DATAar(i + 1, j + 1)
  56.                                 A = Mid(A, 2, 3) & " " & Mid(A, 8, 2) & ", " & Right(A, 4)
  57.                                 yyDate = CDate(A)
  58.                                 DATAar(i + 1, j + 1) = yyDate
  59.                                 
  60.                           End If
  61.                     Next
  62.             Next
  63.             Application.StatusBar = "資料移到Excel 工作表 ....."
  64.             ActiveSheet.Cells(1, 1).Resize(UBound(DATAar), 7).Value = DATAar
  65.             Columns("A:A").NumberFormatLocal = "yyyy/mm/dd"
  66.             Columns("G:G").NumberFormatLocal = "#,##0_)"
  67.             .Quit
  68.     End With
  69.     Application.StatusBar = "資料下載完成 ....... "
  70.     Application.Wait Time + #12:00:02 AM#
  71.     Application.StatusBar = False
  72.    
  73. End Sub
複製代碼

回復 15# quickfixer


    謝謝提供的信息
去年有去瀏覽過

TOP

回復 14# Scott090

我知道有一些範例可搜尋到,可是很分散
那串文章寫了各大網站的下載範例很集中,而且新手也可以下載:lol
另外您在問的,鉅亨網歷史行情下載問題
01那邊75樓的文章可解決
不好意思權限還不夠,只能在這發言

TOP

回復 13# quickfixer


    這個麻辣家族論壇也有使用 xmlhttp 供參考的例子,
    搜索一下就有了

TOP

回復 12# Scott090


  多了一篇不下載csv,只下載網頁的程式碼
比較慢每個股票資料要8.91秒下載
那篇文章每個程式都很快,可是有點難

TOP

回復 11# quickfixer


參考網址:   https://www.mobile01.com/topicdetail.php?f=511&t=4737630&p=28
這個是直接下載 .csv 檔
謝謝提供的信息

TOP

本帖最後由 quickfixer 於 2017-11-20 10:27 編輯

不好意思我還不能貼url沒有權限
去看就知道是那篇文章了
在文書處理區的第一頁
文章内11/16號那個程式

TOP

回復 8# quickfixer


   
我在01文書處理區有看到只要1.8秒的程式碼


請把網址貼出來,讓大家參考
謝謝

TOP

回復 7# GBKEE


    GBKEE 大大:
謝謝你的總結

TOP

我在01文書處理區有看到只要1.8秒的程式碼

TOP

        靜思自在 : 有智慧才能分辨善惡邪正;有謙虛才能建立美滿人生。
返回列表 上一主題