2017年6月9日 星期五

如何用VBA抓JavaScript(JS)網頁資料

網路上有很多實用的資料,可以抓到Excel裡,然後在整理分析。

以往用Web Query只要注意是Get還是Post查詢,就可以找出資料所在的真正網址。

可是一但遇到查詢的字串輸入後,資料才在網站用JavaScript 動態產生的網頁,這種的
用 Web Query抓不到。

方法是,使用VBA去開啟IE然後,在載入資料。

以下提供範例:
-------------------------------------------------------------------------------

Private Sub CommandButton1_Click()
    ' Const url As String = "http://goodinfo.tw/StockInfo/StockDividendPolicy.asp?STOCK_ID=2330"
    Const url As String = "http://goodinfo.tw/StockInfo/StockDividendPolicy.asp?STOCK_ID=2330"     ' 正確的

    Cells.Clear

    Set ie = CreateObject("internetexplorer.application") '使用此方式可以免除 "設定引用項目"

    With ie
        .Visible = False 'True為開啟ie, False為不開啟ie
        .Navigate url
     
        Do While .ReadyState <> 4 '等待網頁開啟
        DoEvents
        Loop
     
        .ExecWB 17, 2 'Select All
        .ExecWB 12, 2 'Copy selection
        Range("A1").Activate
        ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
            False, NoHTMLFormatting:=True
    End With

    Columns("A:E").Delete    ' 將匯入時 A、E 兩欄移除
    Columns("B:G").Delete
    Rows("1:5").Delete
    Rows("2:12").Delete
 
    ie.Quit
   ' MsgBox "資料複製結束"    ' 離開前顯示一小視窗提醒,按它後即結束。
End Sub
 
 ----------------------------------------------------------------------------

參考來源:
http://forum.twbts.com/viewthread.php?tid=6453

沒有留言:

張貼留言