返回列表 上一主題 發帖

請問這個網頁如何用WEB查詢輸入excel

http://portal.sw.nat.gov.tw/APGQ/GB315!query?declNo=BE++02XE580024

內容是json格式
{"msg":"[執行成功]","transTypeCd":"海","totGrossWeight":49376,"destCd":"VNCLI","totPackQty":"32","declType":"G5","relDate":"102\/09\/17","totPackQtyUnit":"PLT","declNo":"BE  02XE580024","vslSign":"BKHC","examRelNote":"Y","voyageFlightNo":"1084-186S","marketMftNote":"Y","status":"ok","vslName":"UNI-PROSPER                        "}




可能要下xmlhttp下載
可果要用excel   web查詢,我試過會亂碼,可能還要會轉碼

就要用ie法找到tag按下去,從裏面找table

提供兩個網頁參考:
http://club.excelhome.net/forum.php?mod=viewthread&action=printable&tid=939881

http://blog.csdn.net/a814153a/article/details/9071577

TOP

回復 10# GBKEE

請問超級版主

透過您的方法,大概知道怎麼切,我只會版主的方式修改如下:
  1.     Sub Ex()
  2.         Dim Ar, AA(), 出口報單號碼 As String, Sh As Worksheet
  3.         出口報單號碼 = InputBox("出口報單號碼", "出口報單放行資料查詢", "BE  02XE580024")
  4.         If 出口報單號碼 = "" Then Exit Sub
  5.         Set Sh = ActiveSheet                                 '指定顯示資料的工作表 'ActiveSheet->作用中的工作表
  6.         With CreateObject("Microsoft.XMLHTTP")
  7.            .Open "GET", "http://portal.sw.nat.gov.tw/APGQ/GB315!query?declNo=" & 出口報單號碼, False
  8.             .send
  9.             Ar = Split(Replace(.responsetext, """", ""), ",")
  10.             For i = 0 To UBound(Ar)
  11.                 Sh.Cells(1 + i, 1) = Ar(i)  'B欗
  12.            Next
  13.            
  14.             For i = 0 To UBound(Ar)
  15.                 Sh.Cells(1 + i, 2) = Split(Sh.Cells(1 + i, 1), ":")(0) 'B欗
  16.                 Sh.Cells(1 + i, 3) = Split(Sh.Cells(1 + i, 1), ":")(1) 'B欗
  17.            Next
複製代碼


請問版主:
AA = Array(1, 8, 4, 7, 2, 14, 11)           'A欗的標題內容 Ar中陣列對應之索引值
AA = Array(5, 3, 10, 6, 12, 9)                 'C欗的標題內容 Ar中陣列對應之索引值

是為了方便指定AR陣列中指定的元素,在放進想要的CELLS中嗎?

============================
           On Error GoTo Er                            '出口報單號碼 不正確會有錯誤:

它跳到
Er:
        Sh.[b2].Resize(7, 1) = ""
        Sh.[d2].Resize(7, 1) = ""
要讓這兩欄都設為空字串嗎?

如果要批次找100值放進去跑回圈,中間有錯的話
要放 on error resume next嗎?
或是這兩個方式有分別嗎?

謝謝

TOP

本帖最後由 joey0415 於 2013-11-17 20:58 編輯

回復 15# c_c_lai

Ar = Split(Trim(Replace(Replace(.responsetext, """", ""), "}", "")), ",")

請問程式碼的最中的核心柝解成陣列,再分柝時需要另命陣列嗎?否則再柝解時

比如柝成五個元素,可以再同時往下一起柝嗎?

謝謝
============================
我看錯了,原來是先取代
" =>空字串
}=>空字串

{=>空字串
\=>空字串

最後才柝分

TOP

本帖最後由 joey0415 於 2013-11-18 12:00 編輯

回復 19# GBKEE
  1. .document.body.innerHTML = .document.getElementById("queryResult").outerHTML
複製代碼
把.outerHTML的傳給.body.innerHTML   ?

請問超版,這句話怎解呢?

謝謝

TOP

本帖最後由 joey0415 於 2013-11-18 22:04 編輯

回復 26# GBKEE

請問超級版主

以這方式來抓鉅享網來練習時,程式碼如下
  1.     Sub TEST11()
  2.         Dim x   
  3.         With CreateObject("InternetExplorer.Application")
  4.             .Visible = True '是否顯示IE
  5.             .Navigate "http://www.cnyes.com/twstock/Institutional/1101.htm"
  6.             Do While .readyState <> 4: DoEvents: Loop
  7.             Set x = .document.getElementById("a_itrust")
  8.             x.Click  
  9.             Do While .readyState <> 4: DoEvents: Loop
  10.             .document.body.innerHTML = .document.getElementById("tabvl").outerHTML
  11.             .execwb 17, 2 'Select All
  12.             .execwb 12, 2 'Copy selection
  13.             ActiveSheet.[A1].Select
  14.             ActiveSheet.PasteSpecial Format:="HTML" ', NoHTMLFormatting:=True
  15.             .Quit
  16.         End With
  17.     End Sub
複製代碼
到這一行會出錯,如圖
.document.body.innerHTML = .document.getElementById("tabvl").outerHTML

我以鉅亨網中的投信進出為例子練習

再問一個困擾很久的問題
.getElementById與.getElementsByTagName
有些有id與tagname 有些只有id ,有些只有tagname
請問有先後從屬的關係嗎?

若有父子關係把子設為x的話,那父層就不能表示嗎?還是先父層再加一個  「點」

若這樣設x=.document.getElementById("tabvl") 出錯

請版主指點一下

TOP

回復 30# c_c_lai

感謝大大分享,我昨天最後也用table來找
不過請問大大.Document.getelementsbytagname("table")(1).outerHTML

中的1是怎麼算的,我算的是2,網頁的table有固定算法嗎?由上而下,尤左而右嗎?
感謝

TOP

回復 33# GBKEE

謝謝版主!我大概知道了!
謝謝

請教一下,鉅亨網的網頁常會定時重新整理
若要用上面的方法抓取時,最後不要quit
只想要將body.innertext內容放上去,不要讓鉅亨網再重新整理成原來的畫面,要加上什麼語句呢?

TOP

本帖最後由 joey0415 於 2013-11-19 23:02 編輯

回復 36# c_c_lai
我後來用excelhome 藍天大的分析法,只要輸入網頁,每個tag是哪一個都跑不掉,非常好用

還是感謝指點,教學相長


查找標籤.zip (82.59 KB)

TOP

回復 38# c_c_lai


將網址貼在首頁的 A1

再按查詢

點擊該單元格就會看到內容

TOP

回復 35# GBKEE

小弟又換了一個網站
這個網站我會用好幾種方法抓了,只不過這次換成這種方式時,如果直接run結果,會出現如下圖,卡在那一句話
表格("table")(7)是對的,因為有成功過
.document.body.innerHTML = .document.getelementsbytagname("table")(7).outerHTML
2013-11-20_114353.gif
如果按F8一步步執行時,有時候會成功,有時候會失敗
  1.     Sub test1()
  2.         Dim URL As String
  3.         ActiveSheet.Cells.Clear
  4.         URL = "http://www.tdcc.com.tw/smWeb/QryStock.jsp"
  5.         With CreateObject("InternetExplorer.Application")
  6.             .Visible = True     '  是否顯示 IE
  7.             .Navigate URL
  8.             Do While .readyState <> 4: DoEvents: Loop
  9.             .document.All.tags("option")(7).Selected = True
  10.             .document.getelementsbytagname("input")(1).Value = "2330"
  11.             .document.getelementsbytagname("input")(4).Click
  12.             Do While .readyState <> 4: DoEvents: Loop
  13.             .document.body.innerHTML = .document.getelementsbytagname("table")(7).outerHTML

  14.             .execwb 17, 2       '  Select All
  15.             .execwb 12, 2       '  Copy selection
  16.             
  17.             With ActiveSheet
  18.                 .Cells.Clear
  19.                 .[A1].Select
  20.                 .PasteSpecial Format:="HTML", NoHTMLFormatting:=True
  21.                 .Cells.EntireColumn.AutoFit     '  自動調整欄寬
  22.             End With
  23.             .Quit
  24.         End With
  25.         
  26.     End Sub
複製代碼

TOP

        靜思自在 : 我們要做好社會的環保,也要做好內心的環保。
返回列表 上一主題