- 帖子
- 2848
- 主題
- 10
- 精華
- 0
- 積分
- 2903
- 點名
- 0
- 作業系統
- 〔略〕
- 軟體版本
- 〔略〕
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 〔略〕
- 註冊時間
- 2013-5-13
- 最後登錄
- 2026-7-25
|
超版對網頁非常專業,程式也慎求〔正確完整〕及〔效率〕,
取得〔頁數〕及〔最大ID〕才可做最小的迴圈,認真負責的工程師才會這樣不厭勞煩,佩服!!!
提供另個不專業參考:- Sub TEST()
- Dim UL$, STR, FN&, j&, k%, Arr, X&, N&, TM
- TM = Time
- [Sheet1!A:E].ClearContents: [F1] = ""
- [Sheet1!A1:E1] = Array("ID", "姓名", "電話", "傳真", "地址")
-
- '↓取得〔總頁數〕
- STR = 網頁原始碼("http://www.tyland.org.tw/pg.asp?theme=11")
- STR = Split(Split(STR, ">最後一頁")(0), "absolutepage=")
- FN = STR(UBound(STR))
-
- '↓取得〔最大ID編號〕
- UL = "http://www.tyland.org.tw/pg.asp?theme=11&kinds=2&area=&search=o&review=&model=1&meid=&absolutepage="
- STR = 網頁原始碼(UL & FN)
- STR = Split(STR, "view-m.asp?mno=")
- FN = Split(STR(UBound(STR)), "'>")(0)
-
- '↓開始擷取資料(含所有資料)
- ReDim Arr(1 To FN, 1 To 5)
- For j = 1 To FN
- Application.StatusBar = "■■■■■■資料擷取中:" & j & "/" & FN
- STR = 網頁原始碼("http://www.tyland.org.tw/view-m.asp?mno=" & j)
- If Len(STR) = 0 Then GoTo 101
- X = InStr(STR, "<li>會 號:")
- If X = 0 Then GoTo 101
- STR = Split(Mid(STR, X), "</li>")
-
- N = N + 1
- For k = 1 To 4 'ID.姓名.電話.傳真
- Arr(N, k) = Trim(Split(STR(k - 1), ":")(1))
- Next k
- Arr(N, 5) = Trim(Split(STR(6), ":")(1)) '地址
- 101: Next j
-
- If N > 0 Then [A2:E2].Resize(N) = Arr
- [Sheet1!F1] = Format(Time - TM, "hh:mm:ss")
- Application.StatusBar = False
- Beep
- End Sub
-
-
- '=============副程式
- Function 網頁原始碼(xURL$) As String
- On Error Resume Next
- With CreateObject("MSXML2.XMLHTTP")
- .Open "POST", xURL, False
- .send
- 網頁原始碼 = .ResponseText
- End With
- On Error GoTo 0
- End Function
複製代碼
載點1:
20150925擷取網頁文字.rar (12.67 KB)
載點2:http://www.funp.net/840179 |
|