返回列表 上一主題 發帖

[發問] 查找網站資料

回復 14# GBKEE

這張圖值五顆星啦!

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

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

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

謝謝

TOP

回復 13# joey0415


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

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

回復 11# GBKEE

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

如下圖,六是這指個嗎?


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


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

還真有些模糊

希望超版能多指點

謝謝

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

TOP

回復 8# ciboybj
找了一下2010版 試試看可改成如下
  1. ' Set D = .document.LastChild.LastChild.all(1).contentWindow.frames.document.getElementsByTagName("table")
  2.         Set D = .document.all(6).all(1).contentWindow.frames.document.getElementsByTagName("table")
複製代碼
回復 10# joey0415
Set D = .document.all(6).all(0).contentWindow.frames.document.getElementsByTagName("INPUT")
解釋如下
.document->HTML的[文件物件]
.All->document的element [元素集合]
all(6):排行第6位(下限索引值從0 開始)的[元素];.all(0)排行第0的[元素];  
contentWindow屬性是指指定的frame或者iframe所在的window物件
getElementsByTagName("INPUT")->元素中的TagName為"INPUT"的集合物件
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 joey0415 於 2014-8-6 21:15 編輯
回復  ciboybj
試試看
GBKEE 發表於 2014-8-5 06:27



寫的真好!請問超版

Set D = .document.all(6).all(0).contentWindow.frames.document.getElementsByTagName("INPUT")

這句話的意思是有六個INPUT中的第一個子視窗將它設為物件嗎?

如果是的話,那下面這句
Set D = .document.LastChild.LastChild.all(1).contentWindow.frames.document.getElementsByTagName("table")
將右邊的TABLE的設為物件嗎?

左邊的叫.all(6).all(0).contentWindow.frames

右邊的叫.LastChild.LastChild.all(1).contentWindow.frames

為什麼右邊的不叫Set XXX = .document.all(1).all(0).contentWindow.frames.document.getElementsByTagName("table")

而且說上面的不是物件呢?是沒有還是寫錯呢?

請版主解說一下好嗎?還是有哪一個網頁可以參考!謝謝

TOP

回復 8# ciboybj
物件不支援此屬性或方法 (錯誤 438)
不好意思我只有2003版.無法替你修正

請修改6#的程式碼
   
  1. Dim IE As Object
  2.     Set IE = CreateObject("InternetExplorer.Application")
  3.     With IE
  4.     'With CreateObject("InternetExplorer.Application")
複製代碼

有錯誤時 請到如圖 IE物件找找 "table" 在哪裡


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

TOP

GBKEE 您好
我在win 7 excel 2010 下執行時
出現執行階段錯誤438
偵錯指向下列程式碼
Set D = .document.LastChild.LastChild.all(1).contentWindow.frames.document.getElementsByTagName("table")
想請問您這要怎麼解決
ps 我另外在win xp excel2003中測試成功

再請您幫忙
謝謝您

TOP

回復 5# ciboybj
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim D  As Object, e As Object, URL As String
  4.     '工業用酵素
  5.     '工業用牛奶發酵劑
  6.     '液晶
  7.     '防腐劑
  8.     '工業用除臭劑
  9.     '工業用乾燥劑
  10.     '中和劑
  11.     URL = "http://tmsearch.tipo.gov.tw/TIPO_DR/GoodsIPOContent.jsp"
  12.     With CreateObject("InternetExplorer.Application")
  13.         .Navigate URL
  14.         .Visible = True
  15.          Do While .ReadyState <> 4 Or .Busy
  16.             DoEvents
  17.         Loop
  18.         Set D = .document.all(6).all(0).contentWindow.frames.document.getElementsByTagName("INPUT")
  19.         D("txtGoodsName").Value = "中和劑"
  20.         For Each e In D
  21.             If e.Value = "查詢" Then e.Click: Exit For
  22.         Next
  23.         Do While .ReadyState <> 4 Or .Busy
  24.             DoEvents
  25.         Loop
  26.         Set D = .document.LastChild.LastChild.all(1).contentWindow.frames.document.getElementsByTagName("table")
  27.         Ep D(0).outerHTML
  28.         .Quit
  29.     End With
  30. End Sub
  31. Private Sub Ep(S As String)
  32.     With CreateObject("InternetExplorer.Application")
  33.         .Navigate "about:Tabs"
  34.         .Visible = True
  35.        .document.body.innerhtml = S
  36.         .ExecWB 17, 2       '  Select All
  37.         .ExecWB 12, 2       '  Copy selection
  38.         With ActiveSheet
  39.             .Cells.Clear
  40.             .Range("A1").Select
  41.             .PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True
  42.         End With
  43.         .Quit
  44.     End With
  45. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

各位好
我利用下列程式 貌似可將值send 到網站上,但是我不知道該如何把網站的資料抓回來
不知道是否有人能幫我看看
  1. Sub jdj()
  2. Dim xmlhttp As Object
  3. Set xmlhttp = CreateObject("msxml2.xmlhttp.3.0")
  4. xmlhttp.Open "post", " http://tmsearch.tipo.gov.tw/TIPO_DR/servlet/InitGoodsIPOResult", False
  5. xmlhttp.send " txtGoodsName=%A8F%A9%D4&txtGoodsID=&hdnGoodsNameLabel=%B0%D3%AB%7E%28%AAA%B0%C8%29%A6W%BA%D9&hdnGoodsIDLabel=%B0%D3%AB%7E%28%AAA%B0%C8%29%B2%D5%B8s%A5N%BDX"
  6. If xmlhttp.readystate = 4 Then
  7. MsgBox "done"
  8. end if
  9. end sub
複製代碼
謝謝

TOP

        靜思自在 : 人生不一定球球是好球,但是有歷練的強打者,隨時都可以揮棒。
返回列表 上一主題