(不定期更新)使用VBA解決 excel web 查詢無法匯入、匯入太慢的股市資料

nijawang wrote:
請問這種先要選幾個選項,才會出現資料的網頁該如何抓資料?


類似1313樓範例的寫法















排版、代碼,請自行練習修改


[點擊下載]
nijawang
謝謝snare大!
S大您好,
又來請教您些問題:
目前想抓取工商時報新聞,
卻總是發生"沒有設定區域變數的錯誤"。


但去確認HTMLsourcecode.body.innerhtml變數內是有抓到網頁的上表欄的。
不確定是否因為有彈出視窗的問題,導致無法下載網頁的回應資料?!


另目前嘗試解析網頁網址,
想將每則新聞下載成: 日期、標題、標題插入超連結 的方式呈現,
不過對於寫法及網頁的解析上還不甚了解,
是否也能請S大稍微提點指導,
謝謝~



[點擊下載]
strainny wrote:
另目前嘗試解析網頁網址,
想將每則新聞下載成: 日期、標題、標題插入超連結 的方式呈現,


那個不是表格是連結,方法類似625樓
放棄這個網站吧,我試一下就被封鎖了


strainny
感謝S大的回覆!可以另外請教若是有彈跳視窗有建議的解決辦法嗎?問chatgpt似乎要安裝selenium,是否有不安裝的解決方式? ps:私心想爬這樓的老大文XDD
snare
xmlhttp方式,基本上不用理會彈跳視窗,因為是走捷徑,直接抓資料來源網址。所以有些網站會加上防爬蟲,增加一些付費會員,或是讓廣告可見度高一些增加收入。
Snare大大您好,

我目前在用證交所網站練習抓JSON格式的資料,
但是發現Request URL的最後一串數字似乎會隨著查詢時間的不同而變化,
而我爬文後似乎沒找到類似的問題解答,因此想詢問這串數字該使用何種語法取得?
或是可以參考哪一樓的寫法?

謝謝



網址如下:
https://www.twse.com.tw/zh/trading/historical/mi-index.html

敬祝Snare大大新年快樂,萬事如意!
howard383873 wrote:
可以參考哪一樓的寫法?


很多樓,最近的是1491樓
詳細說明請 google unix 時間

Sub test()

MsgBox DateToUnixTime("2025/01/27")

MsgBox DateToUnixTime1(Now())

MsgBox UNIXTime()

End Sub

Function DateToUnixTime(dstring As String) As Long
DateToUnixTime = (DateValue(dstring) - #1/1/1970 8:00:00 AM#) * 86400
End Function

Function DateToUnixTime1(dstring As Date) As Long
DateToUnixTime1 = (dstring - #1/1/1970 8:00:00 AM#) * 86400
End Function

Function UNIXTime()
UNIXTime = Round(((Date - #1/1/1970#) * 86400 + Timer) * 1000, 0)
End Function

howard383873
Snare大大您好,在前幾樓確實有看到類似的寫法,只是試了幾次一直沒有成功。現在單獨拆開來看後,就了解這段程式碼的意思了,再次謝謝您撥冗回覆問題,祝您新年快樂!
snare wrote:
突然發現goodinfo...(恕刪)


Snare大師 新年好:
我想去抓(1) Goodinfo!台灣股市資訊網 2025股利發放年度股利政策一覽 和 (2) Goodinfo!台灣股市資訊網 2024 發放年度除權息日程,其網址分別是
(1) https://goodinfo.tw/tw/StockDividendPolicyList.asp?MARKET_CAT=全部&INDUSTRY_CAT=全部&YEAR=2025
(2) https://goodinfo.tw/tw/StockDividendScheduleList.asp?MARKET_CAT=全部&INDUSTRY_CAT=全部&YEAR=2024
XLS下載網址分別是
(1) blob:https://goodinfo.tw/582fb3d7-7673-4056-aabb-491d349055fb
(2) blob:https://goodinfo.tw/76b8d543-3367-4e8c-b63e-836fd0ab467c,這都是帶html標籤的連續字串

爬文看到 613樓有抓GoodInfo的股利政策,但是對我而言,實在太高段了。嘗試執行getpost71(new2)卻發生如下問題:
1. 代碼載入系統Sub get_Q_Y() 的Debug.Print Get_Q.Length 即發生沒有設定物件變數或With區塊變數的錯誤。將Debug.Print註解掉,ReDim Q(Get_Q.Length - 1) 也發生沒有設定物件變數或 With 區塊變數的錯誤
2. 點按下載報表時Sub getpost(url As String, url_a As String, n As String)的 If n = "acc" Then .SetText HTMLsourcecode.getelementbyid("divFinDetail").innerhtml 發生沒有設定物件變數或With區塊變數的錯誤
3. 點按下載漲跌資料(日K或月K)時 If n = "股價漲跌資料表" Then .SetText HTMLsourcecode.getelementbyid("divPriceDetail").innerhtml 發生沒有設定物件變數或With區塊變數的錯誤
4. 點選股利政策時Clipboard.SetText HTMLsourcecode.all.tags("table")(10).innerhtml發生沒有設定物件變數或With區塊變數的錯誤。

請問大師我應該怎麼處理我的股利政策和除權息日程的問題?謝謝!
Morten Hsu wrote:
這都是帶html標籤的連續字串

Morten Hsu wrote:
爬文看到 613樓有抓GoodInfo的股利政策,但是對我而言,實在太高段了。嘗試執行getpost71(new2)卻發生如


goodinfo 不久前改用 javascript ,vba xmlhttp 不支援,那些舊範例沒用了

方法同1493樓(您1492樓的發問)


Sub all_table()

Dim chrome As New Selenium.ChromeDriver, UrL As String, table, R As Integer, C As Integer, i As Integer, TempArray

Sheets("工作表1").Cells.Clear
R = 1: C = 1

UrL = "https://goodinfo.tw/tw/StockDividendPolicyList.asp?MARKET_CAT=全部&INDUSTRY_CAT=全部&YEAR=2025"
chrome.Get UrL
chrome.Wait 6000


Set table = chrome.FindElementsByTag("table")


For i = 1 To table.Count

R = R + 1
TempArray = table(i).AsTable.Data

Sheets("工作表1").Cells(R, C).Value = "****** Table " & i & "******"
If (UBound(TempArray) * UBound(TempArray, 2)) > 0 Then
Sheets("工作表1").Cells(R + 1, C).Resize(UBound(TempArray), UBound(TempArray, 2)).Value = TempArray
End If
R = R + UBound(TempArray) + 1
DoEvents
Next i


chrome.Quit
Set chrome = Nothing

End Sub

Sub one_table()

Dim chrome As New Selenium.ChromeDriver, UrL As String, stock As String, table, TempArray

Sheets("工作表1").Cells.Clear

UrL = "https://goodinfo.tw/tw/StockDividendPolicyList.asp?MARKET_CAT=全部&INDUSTRY_CAT=全部&YEAR=2025"
chrome.Get UrL
chrome.Wait 6000

Set table = chrome.FindElementsByTag("table")

TempArray = table(9).AsTable.Data 'table(n)

Sheets("工作表1").Cells(1, 1).Resize(UBound(TempArray), UBound(TempArray, 2)).Value = TempArray

chrome.Quit
Set chrome = Nothing

End Sub


Morten Hsu
非常感謝Snare大師,我得好好研究一番。
想請大大教學一下
像1268樓yahoo中所找到的url是怎麼找出來
像是上櫃類股之下的
電子產業
概念股
集團股這些url要怎麼找出來

還有
分類行情之下在1268找出來的是即時行情
那像
法人買賣
主力進出
大戶籌碼
這些url要怎麼找出來

真的很不好意思麻煩大大照成麻煩謝謝大家
snare
相關教學有很多,請 google F12 開發者工具 真實網頁 , 或 google fiddler 真實網頁。最近有回答到的在 1496、1471、1352、1205樓…
kurgman
謝謝您我在多看一下這些資料
樓主您好,

https://invest.fubonlife.com.tw/content.html?sUrl=$W$WA$WAFUBONRATEPAGE]DJHTM
1.此網頁,先前於568-569樓已請教您一次,也順利取得資料,但因又改版,原程式碼,無法取得資料
2.本次資料似乎會存在於"function getExchangeOne()"中,不知要如何修正程式碼,才能取得資料?

圖一:


圖二:
activer wrote:
本次資料似乎會存在於"function getExchangeOne()"中












[點擊下載]
activer
[謝謝]
關閉廣告
文章分享
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 156)

今日熱門文章 網友點擊推薦!

OSZAR »