• 156

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

Taipei-Walker wrote:
請問snare大大
以下這個網址有辦法像200樓範例那種抓取方式嗎?
https://www.taifex.com.tw/cht/3/pcRatio
 
我用CHROME的開發人員模式,找不到像200樓那種下載網址


taifex pcRatio 沒有提供csv下載網址,所以不行

taifex pcRatio,以前寫過範例,剛剛測試正常,不需修改程式碼
日期參數不重要,因為只能查1個月,用taifex提供那個excel連結下載即可




303樓(2018-02-09)
範例內sub gettaifex() 副程式,內有6個網頁,url5就是
如果不要其它的網頁,請自行精簡程式碼
snare wrote:
taifex pcRatio...(恕刪)


感恩 SNARE 大大...我來去研讀那個範例....
再請問snare大大以下這個網址....似乎只能想辦法去 觸發他的 按鈕
不知是否有類似的範例或資訊能參考嗎?

https://www.taifex.com.tw/cht/7/vixMinNew
Taipei-Walker wrote:
以下這個網址....似乎只能想辦法去 觸發他的 按鈕
不知是否有類似的範例或資訊能參考嗎?

https://www.taifex.com.tw/cht/7/vixMinNew



可用200樓(2017-06-23)範例解決
日期格式為8碼數字,檔案格式為txt
日期、排版、檔名…等,請自行修改程式碼
URL = "https://www.taifex.com.tw/cht/7/getVixData?filesname=20201229"

如不想手動輸入日期,可用21樓(2017-04-30 )範例
("table")(0),取得日期,修改成正確格式後,再用200樓範例下載


感恩SNARE 大大... 我來去研究研究...

snare wrote:
可用200樓(2017(恕刪)
Snare大大你好,請教你facebook的貼文和留言,可以用上述哪個方式抓取呢?找了很多方法,大部分用python和selenium來做,我想vba應改也可以,只是我能力不足,所以來求教。謝謝你!
goldchiou wrote:
請教你facebook的貼文和留言,可以用上述哪個方式抓取呢?找了很多方法,大部分用python和selenium來做,我想vba應改也可以,只是我能力不足


會用python、selenium+webdriver,這是高手,不是能力不足
說不定我還需要向您請教、學習


facebook…
我沒貼文、也沒朋友可測試,所以不好意思,沒vba範例…
(ig、blog…那些,我也都沒在用)



Snare大大,謝謝你,你是我遇到最熱心的人;python、selenium和webdrive等,我都不會,所以只好慢慢學。
謝謝你,在這我學會很多東西。
snare 大大,
https://finviz.com/screener.ashx



我想要抓finviz screener之後的資料, 不知我可以運用哪個範例來練習.

Tang7325
tang7325 wrote:
https://finviz.com/screener.ashx
我想要抓finviz screener之後的資料, 不知我可以運用哪個範例來練習.


21樓的簡易範例,就可以處理

但這個網站,要一次全部匯出,是付費功能
不付費的情況下,只能一次一頁下載,以這個網站來說,要下載381次

測試不間斷連續下載6次
(381*6=2286次查詢)(每次下載7610筆資料,約2分半,每頁20筆約0.4秒)
目前看來似乎(暫時)沒有擋ip的功能

付費功能對您可能會比較方便,一次匯出通常不用1秒
免費要2分半,對網站做大量查詢,還有被擋ip的風險







'(點我看大圖)



Sub get_finviz()

Dim URL As String, HTML As Object, GetXml As Object, Table
Dim Page As Integer, LastRow As Integer, p As Integer, ttt As Double
Set HTML = CreateObject("htmlfile")
Set GetXml = CreateObject("msxml2.xmlhttp")

Application.ScreenUpdating = False
Cells.Clear

ttt = Timer
URL = "https://finviz.com/screener.ashx"
With GetXml
.Open "GET", URL, False
.send

HTML.body.innerhtml = .responsetext
Page = HTML.getElementById("pageSelect").Length

'first Page
Set Table = HTML.all.tags("table")(16).Rows
For i = 0 To Table.Length - 1
For j = 0 To Table(i).Cells.Length - 1
ActiveSheet.Cells(i + 1, j + 1) = Table(i).Cells(j).innertext
Next j
Next i


'2 ~ last page
For p = 2 To Page
LastRow = (p - 1) * 20 + 1
URL = "https://finviz.com/screener.ashx?v=111&r=" & LastRow

.Open "GET", URL, False
.send

HTML.body.innerhtml = .responsetext
Set Table = HTML.all.tags("table")(16).Rows

For i = 1 To Table.Length - 1
For j = 0 To Table(i).Cells.Length - 1
ActiveSheet.Cells(LastRow + i, j + 1) = Table(i).Cells(j).innertext
Next j
Next i
Next p

End With

Application.ScreenUpdating = True

Debug.Print "total page:" & Page & vbNewLine & "total time:" & Timer - ttt & _
vbNewLine & "Average per page:" & (Timer - ttt) / Page & "秒"

Set HTML = Nothing
Set GetXml = Nothing


End Sub
  • 156
內文搜尋
X
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 156)
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?