Board logo

標題: status code : 304 是不是爬不下來 ? [打印本頁]

作者: vanguarx    時間: 2019-7-5 17:19     標題: status code : 304 是不是爬不下來 ?

請教各位

https://www.cac.edu.tw/apply108/system/108ColQry_forapply_3r5k9d/html/108_001562.htm

試了好多種方法,但就是爬不下這個網頁。

發現 一般Headers 的 status code : 200 ,但這個網頁  status code : 304

是否這個因素爬不下來 ?
作者: joey0415    時間: 2019-7-5 20:56

回復 1# vanguarx

的確好幾常用的方法抓不下來,不過
以前超級板主程式式碼修改後
尚可抓取
  1. Sub 放榜()
  2.     Cells.Clear
  3.     Application.ScreenUpdating = False
  4.     With CreateObject("internetexplorer.application")
  5.         surl = "https://www.cac.edu.tw/apply108/system/108ColQry_forapply_3r5k9d/html/108_001562.htm"
  6.         .Visible = True
  7.         .Navigate surl
  8.         Application.Wait Now + TimeValue("00:00:01")
  9.          Do While .ReadyState <> 4 Or .Busy: DoEvents: Loop
  10.          
  11.          Application.Wait Now + TimeValue("00:00:01")
  12.         x = .Document.getElementsByTagName("table").Length
  13. '                    For Z = 0 To x - 1
  14. '                        MsgBox "這??第" & Z & "個表格" & Chr(10) & .Document.getElementsByTagName("table")(Z).innerText
  15. '                    Next
  16.         Set shts = ActiveSheet '
  17.         xlHtm = .Document.body.innerHTML
  18.         Set A = .Document.getElementsByTagName("table")
  19.         For xi = st To A.Length - 1 Step 2
  20.             .Document.body.innerHTML = A(xi).outerHTML
  21.             .ExecWB 17, 2       '  Select All
  22.             .ExecWB 12, 2       '  Copy selection
  23.             With shts
  24.                 .Range("A" & .[A65535].End(xlUp).Row + 1).Select
  25.                 .PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True
  26.             End With
  27.             .Document.body.innerHTML = xlHtm                  '還原
  28.         Next xi
  29.             .Quit
  30.         End With
  31.     Application.ScreenUpdating = True
  32.    
  33. End Sub
複製代碼

作者: vanguarx    時間: 2019-7-7 15:39

太感激了。
Joey 大大還很貼心寫了註解,太受用了。
作者: vanguarx    時間: 2019-7-8 10:05

想問一個問題,為何 .ExecWB 17,2 這代表 select All ? ExecWB 12,2 這代表 copy selection ?? 不太懂這是哪裡來的

For xi = st To A.Length - 1 Step 1
            .Document.body.innerHTML = A(xi).outerHTML
            .ExecWB 17, 2       '  Select All
            .ExecWB 12,2        '  Copy selection
            With shts
                .Range("A" & .[A65535].End(xlUp).Row + 1).Select
                .PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True
            End With
            .Document.body.innerHTML = xlHtm                  '還原
Next xi
作者: joey0415    時間: 2019-7-9 09:31

回復 4# vanguarx

參考看看

http://white5168.blogspot.com/2012/08/excel-vba-js.html




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)