返回列表 上一主題 發帖

股價代號和起始日期的抓取

股價代號和起始日期的抓取

各位老師你好

http://www.cnyes.com/twstock/ps_historyprice/1101.htm

我想抓取上述網頁的資料,無奈網址只有秀出股價代號

但是網頁中的起始日我想自己設定,網頁中的原始碼我看不董

所以,無從抓取他的url請高手幫忙遺下

感恩

感謝gbk frankchen7 兩位前人分享
學習中~

TOP

回復 22# frankchen7
謝謝GBKEE版大的提示,我修改成下面的方式已可正常抓取
Sub 鉅亨網_歷史行情()
    Dim Sh As Worksheet, Code As String, d_Start As String, d_End  As String
    Dim A As Object, i As Integer, c As Integer, T As Date
    Code = InputBox("輸入股票代號:", "股票代號", 2303)
    d_End = InputBox("輸入結束日期", "結束日期", Date)
    If Len(Code) <= 3 Or Not IsDate(d_End) Then Exit Sub
    Set Sh = ActiveSheet
    With Sh
        .UsedRange.Clear
        .[a1] = "股票代碼"
        .[b1] = "起始日期"
        .[c1] = "結束日期"
        .[a2] = Code
        .[b2] = DateAdd("yyyy", -3, d_End)  '下載三年的歷史股價
        .[c2] = d_End
        Code = .[a2]
        d_Start = Format(.[b2], "yyyy/mm/dd")
        d_End = Format(.[c2], "yyyy/mm/dd")
    End With
    With CreateObject("InternetExplorer.application")
        .Navigate "http://www.cnyes.com/twstock/ps_historyprice/" & Code & ".htm"
        .Visible = True
        Application.StatusBar = Code & "歷史行情 等候中..."
        Do While .Busy Or .readyState <> 4
             DoEvents
        Loop
            With .Document
               .all("code").Value = Code '填入代碼 (不需要多餘的)
               .all("ctl00$ContentPlaceHolder1$startText").Value = d_Start '填入起始時間
               .all("ctl00$ContentPlaceHolder1$endText").Value = d_End '填入結束時間
               For Each E In .GetElementsByName("ctl00$ContentPlaceHolder1$submitBut")
               If E.Value = "查詢" Then E.Click '送出查詢鍵
               Next
            End With

        T = TIME
        Do
            DoEvents
        Loop Until TIME > T + #12:00:08 AM#
        Set A = .Document.GetElementsByTagName("table")(1)
        Application.StatusBar = Code & "歷史行情 下載中..."
        Cells(2, 1) = .Document.GetElementsByTagName("span")(79).innertext
        For i = 0 To A.Rows.Length - 1
            For c = 0 To A.Rows(i).Cells.Length - 1
                Sh.Cells(i + 3, c + 1) = A.Rows(i).Cells(c).innertext
            Next
'        .Navigate "http://forum.twbts.com/tag.php?name=網頁元素"
'       .Visible = True
        
        Next
       .Quit
    End With
    Application.StatusBar = Code & "歷史行情" & Application.Text(TIME - T, "[S] 秒") & "下載完成"
    MsgBox "OK"
    Application.StatusBar = False
End Sub
:D

TOP

[版主管理留言]
  • GBKEE(2016/4/26 10:50): http://forum.twbts.com/tag.php?name=網頁元素

回復 4# GBKEE

Hello GBKEE版大您好,目前上述方式已無法擷取三年的資訊了,我應該如何確認要修改那些參數?
我從網頁原始碼中找到與起始日期有關的資訊如下,但還是不知道該如何填入:L
<script type="text/javascript" charset="utf-8">
        $(document).ready(
            function(){
                    addDatePicker();               
            }
        );
        function addDatePicker()
        {
            jQuery(
                    function($){
                                $("#ctl00_ContentPlaceHolder1_startText").datepicker();
                                $("#ctl00_ContentPlaceHolder1_endText").datepicker();
                        });       
                       
                        $("#ctl00_ContentPlaceHolder1_startText").keypress(function(){
                            return false;
                        }).datepicker();
            $("#ctl00_ContentPlaceHolder1_endText").keypress(function(){
                            return false;
                        }).datepicker();
        }
</script>

TOP

[版主管理留言]
  • GBKEE(2016/4/26 10:49): 11 帖的程式碼已更新

回復 11# GBKEE


超版大,你好
       請問我使用抓去年的"鉅亨網_董監持股"都沒問題,但目前有二個問題請超版大解惑,謝謝.
1.) 一次抓2013年9月到2014年2月就會直接抓到2014年2月的資料.
2.) RUN的過程,有時會出現"Automation錯誤"

未命名.jpg (102.81 KB)

未命名.jpg

未命名.2.jpg (18.51 KB)

未命名.2.jpg

VBA-董監..test.zip (15.54 KB)

用簡單的心做複雜的事

TOP

回復 19# yopoyuan
將你的發問合併在[指定下載3年歷史股價的資料] ,請從第1帖看起.
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 17# c_c_lai

謝謝大大您的回覆喔  感恩 感恩

TOP

回復 16# omit
網站上有很多有關此類的論述,譬如:
http://forum.twbts.com/viewthread.php?tid=6706&extra=&page=1

TOP

超級版主 您好
我想請問一個問題:
我有一筆匯整資料 資料 由A2:Z2, A2是顯示日期與時間, B2:Z2是變數的值
我在同一個 SHEET抓取資料 每隔5鐘用複製,選擇性貼(值)上 到 A5:Z5做成一筆新資料
然後 下一次 手動 A6:Z6再貼上一次~~在下一次 A7:Z7 ,但覺得很不方便
(可是用巨集錄製無法更改時間變化)
我想寫 VBA 可以每間隔5分鐘自動更新一次之後,就抓取這一筆資料 然後 可以自動抓取30次
不知如何做,可請版主解惑一下....還在學VBA的語法中.....@@

TOP

回復 14# omit
你可試試看,如不行可上傳檔案看看
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 人事的艱難與琢磨,就是一種考驗。
返回列表 上一主題