返回列表 上一主題 發帖

[發問] 想請教如何在網頁(非表格狀態)抓資料(特定字串)到EXCEL表單

超版對網頁非常專業,程式也慎求〔正確完整〕及〔效率〕,
取得〔頁數〕及〔最大ID〕才可做最小的迴圈,認真負責的工程師才會這樣不厭勞煩,佩服!!!
 
 
提供另個不專業參考:
  1. Sub TEST()
  2. Dim UL$, STR, FN&, j&, k%, Arr, X&, N&, TM
  3. TM = Time
  4. [Sheet1!A:E].ClearContents: [F1] = ""
  5. [Sheet1!A1:E1] = Array("ID", "姓名", "電話", "傳真", "地址")
  6.  
  7. '↓取得〔總頁數〕
  8. STR = 網頁原始碼("http://www.tyland.org.tw/pg.asp?theme=11")
  9. STR = Split(Split(STR, ">最後一頁")(0), "absolutepage=")
  10. FN = STR(UBound(STR))
  11.  
  12. '↓取得〔最大ID編號〕
  13. UL = "http://www.tyland.org.tw/pg.asp?theme=11&kinds=2&area=&search=o&review=&model=1&meid=&absolutepage="
  14. STR = 網頁原始碼(UL & FN)
  15. STR = Split(STR, "view-m.asp?mno=")
  16. FN = Split(STR(UBound(STR)), "'>")(0)
  17.  
  18. '↓開始擷取資料(含所有資料)
  19. ReDim Arr(1 To FN, 1 To 5)
  20. For j = 1 To FN
  21.   Application.StatusBar = "■■■■■■資料擷取中:" & j & "/" & FN
  22.   STR = 網頁原始碼("http://www.tyland.org.tw/view-m.asp?mno=" & j)
  23.   If Len(STR) = 0 Then GoTo 101
  24.   X = InStr(STR, "<li>會  號:")
  25.   If X = 0 Then GoTo 101
  26.   STR = Split(Mid(STR, X), "</li>")
  27.  
  28.   N = N + 1
  29.   For k = 1 To 4 'ID.姓名.電話.傳真
  30.     Arr(N, k) = Trim(Split(STR(k - 1), ":")(1))
  31.   Next k
  32.   Arr(N, 5) = Trim(Split(STR(6), ":")(1)) '地址
  33. 101: Next j
  34.  
  35. If N > 0 Then [A2:E2].Resize(N) = Arr
  36. [Sheet1!F1] = Format(Time - TM, "hh:mm:ss")
  37. Application.StatusBar = False
  38. Beep
  39. End Sub
  40.  
  41.  
  42. '=============副程式
  43. Function 網頁原始碼(xURL$) As String
  44. On Error Resume Next
  45. With CreateObject("MSXML2.XMLHTTP")
  46.      .Open "POST", xURL, False
  47.      .send
  48.      網頁原始碼 = .ResponseText
  49. End With
  50. On Error GoTo 0
  51. End Function
複製代碼
 
載點1: 20150925擷取網頁文字.rar (12.67 KB)
載點2:http://www.funp.net/840179

TOP

        靜思自在 : 我們最大的敵人不是別人.可能是自己。
返回列表 上一主題