返回列表 上一主題 發帖

[發問] 查找網站資料

回復 11# GBKEE

謝謝超版,研究網路抓取有一段時間了,這個網站我真的抓不到,所以看到超版的才知道有這麼回事

如下圖,六是這指個嗎?


我只看到網頁中有這些元素呀!


對於.document.all(6).all(0).

還真有些模糊

希望超版能多指點

謝謝

如果找到類似的網頁,再請超版來看看

TOP

回復 11# GBKEE

請問超版,若抓用上市日報表的網站,左邊也是如此,table在右邊,修改超版的程式語法

Set D = .document.all(5).all(0).contentWindow.frames.document.getElementsByTagName("INPUT")
改成5才可以用

右邊的table若用下面的
Set D = .document.all(5).all(1).contentWindow.frames.document.getElementsByTagName("table")
則撈不到資料呢!

以下是日報表的程代碼
  1. Sub 日報表()
  2.     Dim D  As Object, e As Object, URL As String

  3.     URL = "http://bsr.twse.com.tw/bshtm/"
  4. '    URL = "http://tmsearch.tipo.gov.tw/TIPO_DR/GoodsIPOContent.jsp"
  5.     With CreateObject("InternetExplorer.Application")
  6.         .Navigate URL
  7.         .Visible = True
  8.          Do While .ReadyState <> 4 Or .Busy
  9.             DoEvents
  10.         Loop
  11.          Set D = .document
  12.          Stop
  13.         Set D = .document.all(5).all(0).contentWindow.frames.document.getElementsByTagName("INPUT")
  14.         
  15. '        For Each ss In D
  16. '            MsgBox ss.Value
  17. '        Next
  18. '
  19.         Stop
  20.         D("txtTASKNO").Value = "1101"
  21.         For Each e In D
  22.             If e.Value = "查詢" Then e.Click: Exit For
  23.         Next
  24.         Do While .ReadyState <> 4 Or .Busy
  25.             DoEvents
  26.         Loop
  27.         Set D = .document.all(5).all(1).contentWindow.frames.document.getElementsByTagName("table")
  28. '        Stop
  29. '        For Each ss In D
  30. '            MsgBox ss.innerHTML
  31. '        Next
  32.         
  33.         Stop
  34.         Ep D(0).outerHTML
  35.         .Quit
  36.     End With
  37. End Sub
複製代碼
====================================
剛剛試了原版主提出的網頁也是不知道超版說的是哪一個呢?

如圖


TOP

回復 13# joey0415


   
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 14# GBKEE

這張圖值五顆星啦!

改天我再來試試日報表改版主看看

請問版主找資料也是用這種方式呢?還是有別的更好的方式

vba內鍵的資料字型不能放大

謝謝

TOP

回復 15# joey0415


   
vba內建的資料字型不能放大

是這個嗎?

感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

GBKEE 您好
真的很謝謝您
另外
想請問您 有些查詢資料(例如查詢"電腦")會有下一頁的問題
想請教您 此種狀況該如何解決
謝謝您

TOP

本帖最後由 GBKEE 於 2014-8-8 09:51 編輯

回復 17# ciboybj


   
有些查詢資料(例如查詢"電腦")會有下一頁的問題

哪要先看這網頁的原始文件 [下一頁]鍵的名稱.
  1. Sub 日報表()
  2.     Dim D  As Object, E As Object, P As Integer, URL As String, 頁數 As Integer, i As Integer
  3.     Dim P_down As Object
  4.     URL = "http://bsr.twse.com.tw/bshtm/"
  5.     With CreateObject("InternetExplorer.Application")
  6.         .Navigate URL
  7.         .Visible = True
  8.          Do While .readyState <> 4 Or .Busy
  9.             DoEvents
  10.         Loop
  11.         Set D = .Document.all(5).all(0).contentWindow.frames.Document.getelementsbytagname("INPUT")
  12.         
  13.         D("txtTASKNO").Value = "1101"
  14.         For Each E In D
  15.             If E.Value = "查詢" Then E.Click: Exit For
  16.         Next
  17.         Do While .readyState <> 4 Or .Busy
  18.             DoEvents
  19.         Loop
  20.         頁數 = .Document.all(5).all(0).contentWindow.frames.Document.getElementsByName("sp_ListCount")(0).INNERTEXT
  21.          For Each E In .Document.all(5).all(0).contentWindow.frames.Document.getelementsbytagname("INPUT")
  22.                 If E.Value = "下一頁" Then Set P_down = E: Exit For
  23.             Next
  24.          ActiveSheet.Cells.Clear
  25.          .Document.Focus
  26.         For P = 1 To 頁數
  27.             Set D = Nothing
  28.             Do
  29.                 DoEvents
  30.                 Set D = .Document.all(5).all(1).contentWindow.frames.Document.getelementsbytagname("table") '
  31.                
  32.             Loop Until Not D Is Nothing And D.Length = 7
  33.             For i = IIf(P = 1, 3, 4) To 4
  34.                 Ep D(i).outerHTML
  35.             Next
  36.             P_down.Click
  37.             Do While .readyState <> 4 Or .Busy
  38.                 DoEvents
  39.             Loop
  40.         Next
  41.         .Quit
  42.     End With
  43. End Sub
  44. Private Sub Ep(s As String) ' A(A.Length - 1).outerHTML
  45.     With CreateObject("InternetExplorer.Application")
  46.         .Navigate "about:Tabs"
  47.         .Visible = True
  48.         .Document.body.innerHTML = s
  49.         .ExecWB 17, 2       '  Select All
  50.         .ExecWB 12, 2       '  Copy selection
  51.         With ActiveSheet
  52.           '  MsgBox .UsedRange.Rows.Count
  53.             .Range("A" & IIf(.UsedRange.Rows.Count = 1, 1, .UsedRange.Rows.Count + 1)).Select
  54.             .PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True
  55.         End With
  56.         .Quit
  57.     End With
  58. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 16# GBKEE

我指的是「區域變數視窗」

請問版主還有更好的查找方法嗎?

TOP

回復 18# GBKEE

謝謝超版解決這個問題!雖然我不是用這個方法抓的!不過還是要感謝

再請問超版

.Document.Focus

為什麼要這句呢?有什麼差別?

.all(5)的5我是一個一個試出來的

左邊的是frame是all(0)
右邊的是frame為什麼也是all(0)而不是all(1)
超版也是一個一個試出來的嗎?

還是有別的語法可以list出來呢?

感謝超版又學到東西

TOP

回復 20# joey0415
謝謝超版解決這個問題!雖然我不是用這個方法抓的!不過還是要感謝

可否PO上來交流.
.all(5)的5我是一個一個試出來的
超版也是一個一個試出來的嗎?
還是有別的語法可以list出來呢?

用IE語法讀取網頁資料,我也是網路上學來的
.Document.Focus
為什麼要這句呢?有什麼差別?

因該沒差別的,因程式有時會出錯,加上後很流暢.
右邊的是frame為什麼也是all(0)而不是all(1)

11# 有註明   all(6):排行第6位(下限索引值從0 開始)的[元素];.all(0)排行第0的[元素]
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 人的眼睛長在前面,只看到別人的缺點,絲毫看不到自己的缺點。
返回列表 上一主題