返回列表 上一主題 發帖

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

[版主管理留言]
  • 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

[版主管理留言]
  • 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

回復 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

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

TOP

        靜思自在 : 天上最美是星星,人生最美是溫情。
返回列表 上一主題