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

Snare兄你好,

運用了一些假期熟悉下載Good Info的網頁,大致上都可以取得實際網址,也成功的下載檔案。謝謝Snare兄指導。
但是最近想要下載這個檔案,照著之前Snare 190樓的兩種方式,似乎都找不到那個實際的網址,當然檔案也就無法順利下載了。包含了F12/Network/XHR看不到實際網址,以F5 refersh似乎也無法發現。 另外,使用了data:image/png:base, serach 00652 富邦印度,也是看不到相關的實際網址資訊。不知道GoodInfo是不是有改版網頁,以至於使用這樣的方式已經看不到了。謝謝Snare兄。

參考連結

https://goodinfo.tw/StockInfo/StockList.asp?RPT_TIME=&MARKET_CAT=智慧選股&INDUSTRY_CAT=外資連買+–+日%40%40外資連續買超%40%40外資連續買超+–+日&SHEET=法人買賣&SHEET2=法人連買連賣統計%28日%29
lpviva wrote:
使用了data:image/png:base, serach 00652 富邦印度,也是看不到相關的實際網址資訊
(恕刪)


您給的網址,裡面沒有00652




lpviva wrote:
似乎都找不到那個實際的網址,當然檔案也就無法順利下載了。包含了F12/Network/XHR看不到實際網址
(恕刪)


因為您給的網址就是實際網址




lpviva wrote:
不知道GoodInfo是不是有改版網頁
(恕刪)


沒有改版,下載方式同721樓


Sub get_goodinfo()

Dim HTMLsourcecode, Table, Clipboard As Object, Url As String, URL_a As String
Set HTMLsourcecode = CreateObject("htmlfile")
Set Clipboard = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

Url = "https://goodinfo.tw/StockInfo/StockList.asp?RPT_TIME=&MARKET_CAT=智慧選股&INDUSTRY_CAT=外資連買 – 日@@外資連續買超@@外資連續買超 – 日&SHEET=法人買賣&SHEET2=法人連買連賣統計(日)"


With CreateObject("WinHttp.WinHttpRequest.5.1")
.Open "GET", Url, False
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
.send
HTMLsourcecode.body.innerhtml = convertraw(.ResponseBody)

End With


'Set Table = HTMLsourcecode.getElementById("divStockList") 'txtStockListData 剪貼薄方式(2選1)


'Set Table = HTMLsourcecode.getElementById("tblStockList").Rows '逐格寫入方式(2選1)
'逐格寫入前,股票代號那格,需先設文字格式cells(列,欄).NumberFormatLocal = "@"
'或是在數字前面加上'(上標點)



'
'
'剪貼薄 或 逐格寫入,整理用程式碼,放這裡(請找其它範例代入)
'
'

Set HTMLsourcecode = Nothing
Set Table = Nothing
Set Clipboard = Nothing


End Sub
Function convertraw(rawdata)

Dim rawstr
Set rawstr = CreateObject("adodb.stream")

With rawstr
.Type = 1
.Mode = 3
.Open
.Write rawdata
.Position = 0
.Type = 2
.Charset = "utf-8"
convertraw = .ReadText
.Close
End With

Set rawstr = Nothing

End Function



謝謝Snare兄快速回復,00652是前一天的資料,造成誤會,不好意思。另外,只是我給的是"實際網址"?這個網址的來源是我直接上GoodInfo網站點選,從瀏覽器網址列copy/paste得來的,進行檔案下載也是產生錯誤訊息而與其他網頁不同。這個網址感覺裡面的文字跟以前取得的實際網址在文字上有些不同,我將另一個我常看的網頁其名目網址與實際網址同時陳列,希望這樣有助於容易比較。

名目網址:(點選網頁得到的)
https://goodinfo.tw/StockInfo/StockList.asp?RPT_TIME=&MARKET_CAT=熱門排行&INDUSTRY_CAT=投信買超佔發行張數+–+半年%40%40投信買超佔發行張數%40%40投信+–+半年&SHEET=法人買賣統計_投信&SHEET2=買賣超佔發行張數

實際網址:(經由按選F12按照190樓程序查到的)
https://goodinfo.tw/StockInfo/StockList.asp?SEARCH_WORD=&SHEET=法人買賣統計_投信&SHEET2=買賣超佔發行張數&MARKET_CAT=熱門排行&INDUSTRY_CAT=投信買超佔發行張數+–+半年@@投信買超佔發行張數@@投信+–+半年&STOCK_CODE=&RPT_TIME=最新資料&STEP=DATA&RANK=

之前提供的這個網址也是我點選網頁所得,若照之前的作法,感覺上似乎是名目網址,下載網頁資料也出現錯誤訊息。若這是實際網址的話,還想請問名目網址要如何求得?
https://goodinfo.tw/StockInfo/StockList.asp?RPT_TIME=&MARKET_CAT=智慧選股&INDUSTRY_CAT=外資連買+–+日%40%40外資連續買超%40%40外資連續買超+–+日&SHEET=法人買賣&SHEET2=法人連買連賣統計%28日%29

還謝謝Snare萬忙之中指導。
lpviva wrote:
這個網址感覺裡面的文字跟以前取得的實際網址在文字上有些不同(恕刪)


編碼不同
請配合這個網站使用(線上url 編碼、解碼)
https://www.convertstring.com/zh_TW/EncodeDecode/UrlDecode

直接開網頁,什麼選項都不選
可發現使用 GET 方法,send 後面不需要任何參數
資料都在這個網頁,所以直接抓就行

(點下可看大圖)




開網頁後,改變了一些選項
可發現變成 POST 方法
send 後面需要配合參數,或直接加在網址後面
資料有改變,需要改用新網址

(點下可看大圖)

snare wrote:
編碼不同請配合這個網(恕刪)


果然是藥到病除。

原來我用後面這個做法,忘了點選下拉選單,以至於沒有重新開啟網頁,所以會看不到XHR下的stock....的網址。因為自己的沒有留意,勞煩了Snare兄的時間,問題已經解決,謝謝。
snare大,
 
這幾天yahoo finance的history都抓不下來…而之前都正常。
不知道問題可能是出在哪裡?
我看Url的格式應該是沒錯,但資料卻都不會更新。
或可能是Clipboard的問題?
謝謝!
 
Set Xmlhttp = CreateObject("WinHttp.WinHttpRequest.5.1")
With Xmlhttp

.Open "GET", "https://finance.yahoo.com/quote/VTI/history?p=VTI", False
.send
Crumbkey = Left(Split(.responseText, """CrumbStore"":{""crumb"":""")(1), 11)

For i = 2 To lastrow
FileName = ""
Stock = Sheets("US.Stock").Cells(i, 1).Value

Url = "https://query1.finance.yahoo.com/v7/finance/download/" & Stock & "?period1=" & DataToUnixTime(startday) & "&period2=" & DataToUnixTime(endday) & "&interval=1d&events=history&crumb="

.Open "POST", Url & Crumbkey, False
Debug.Print "Full Url = "; Url & Crumbkey
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.send

FileName = Split(.getresponseheader("Content-Disposition"), "filename=")(1)
With Clipboard
.SetText Xmlhttp.responseText
.PutInClipboard
End With
蔬食抗暖化,減碳救地球!
nijawang wrote:
這幾天yahoo finance的history都抓不下來…而之前都正常。
不知道問題可能是出在哪裡?(恕刪)


請回頭從 2020-02-04 731樓其它人的發問,開始看

感謝snare大!
原來2月初網頁就改版了,不過我一直可以更新到3/3。
只是一直很多error就是了。
蔬食抗暖化,減碳救地球!
有人覺得最近 https://mis.twse.com.tw/ 的api 怪怪的嗎,常常無法取得資料,要不然就是等超久才肯吐資料
請教樓主
https://www.cmoney.tw/finance/f00026.aspx?s=6706,這網頁內的資料應參考那個範例抓取或需使用其他方法呢?
關閉廣告
文章分享
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 143)

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