peter624 wrote:
改版以後感覺變很不穩 要判斷"無此資料" 以前都不用。 ...(恕刪)
是的,這次網頁改版後(人工查詢)
Your request timed out 、無資料,出現的頻率變很高
網頁不穩的問題,我無能為力
判斷很簡單,在328樓範例中把
redownload:
MsgBox "請稍後再試", vbOKOnly, "Error"
改成
redownload:
GoTo retry2
或是在redownload:下面直接加入您想要跑的程式、訊息
bioleon69 wrote:
這次改版玩,是不是變慢很多了?...(恕刪)
我測試單筆速度沒什麼變化,多筆我沒試
不過,現在想測試也沒辦法,因為今天網頁又在改版中,日期不能選
程式暫時失效無法使用
(2018-03-25 18:57)
會變慢的原因
可能是您用328樓範例的整個程式架構
328樓範只適用單筆下載,2個表格用了3次查詢
想多筆下載沒改寫好至少會多3倍時間
建議用244樓 module2(模組2)中 main 副程式(先刪掉我是本體那一行) 的程式架構來寫
多筆有空我在試看看
也許328樓範例,星期一就不能用了
好險這次我在程式中有加上 on error 除錯,不然只要一開檔案就出錯
tabsabs wrote:
搞不好是因為這種程式檢索讓網頁伺服器的負載大增所以一直改?
.......(恕刪)
各大型(企業、私人、收費)股票網站,也都是從證交所拿資料的,那種無時無刻即時更新的流量,才嚇人
小小的vba程式沒這個本事啦
從網站原始碼來看,這次主要是改成ajax ,用json回傳資料
好處是可以節省流量、增加反應時間、降低伺服器負載,這是好事,代表有在改善
從人工查詢都會出錯的情況下,可以猜測,會出問題是因為改版沒改好
也許幾天後就正常了
tabsabs wrote:
這種資料不知道能不能要求證交所整理好給大家下載
慘戶反應的人數多的話...
.......(恕刪)
很多網站都有整理好的,還有很多人在賣抓資料的程式
只是要加入會員,而且要很多 $$
慘戶,已經很可憐了,所以才會寫這些免費的範例讓大家參考
不過,雖然範例很多,可是我只有用yahoo股價而已,其它全部沒在用
bioleon69 wrote:
這個真的好用!...(恕刪)
這是投資理財區 Acer_kewei 這位股市高手的表格整理方式
我只是照抄過來,順便加上日期選單而已
Sub test()
Dim myXML As Object
Set myXML = CreateObject("Microsoft.XMLHTTP")
Dim myHTML As Object
Set myHTML = CreateObject("HTMLFile")
With myXML
.Open "GET", "http://club.excelhome.net/tree", False
.send
Debug.Print convertRaw(.responseText)
End With
Set myXML = Nothing
Set myHTML= 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
'‘繁體通常轉成big5就可以了,簡體通常是gb2312
.Charset = "gb2312"
convertraw = .ReadText
.Close
End With
Set rawstr = Nothing
End Function
iamaraymond wrote:
但寫了Code之後卻發現無法轉碼(不論是UTF8,Big5,gb2312都會有問號)...(恕刪)
其實轉換是成功的,是即時運算視窗沒辦法顯示某些編碼的字型,放到表格中是正常的
當需要測試跟編碼有關的程式,有時候不能太相信即時運算視窗所看到的
Sub test()
Dim myXML As Object
Set myXML = CreateObject("Microsoft.XMLHTTP")
Dim myHTML As Object
Set myHTML = CreateObject("HTMLFile")
With myXML
.Open "GET", "http://club.excelhome.net/tree", False
.send
Debug.Print convertraw(.responsebody)
Dim temp
temp = Split(convertraw(.responsebody), vbNewLine)
For Each txt In temp
i = i + 1
Cells(i, 1) = txt
Next
End With
Set myXML = Nothing
Set myHTML = 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
'‘繁體通常轉成big5就可以了,簡體通常是gb2312
.Charset = "gbk"
convertraw = .ReadText
.Close
End With
Set rawstr = Nothing
End Function
您要抓的那些網頁發言的資料,建議用砍站軟體會比較方便
下載後,每一則討論,每頁都會整理好,查閱起來也比較容易
用vba反而麻煩
關閉廣告