使用VBA抓取網頁資料,大約不到5筆就會當掉,求解
暱稱: joey0415
中學生
- 帖子
- 361
- 主題
- 57
- 精華
- 0
- 積分
- 426
- 點名
- 0
- 作業系統
- win7
- 軟體版本
- 2003,2010
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2010-5-13
- 最後登錄
- 2022-12-8
|
回復 1# clio
只抓
https://www.digikey.tw/products/en?keywords=%22CRL2010-JW-1R00ELF-ND%22
剩下請自行修改
test.zip (15.43 KB)
|
|
|
|
|
|
|
暱稱: joey0415
中學生
- 帖子
- 361
- 主題
- 57
- 精華
- 0
- 積分
- 426
- 點名
- 0
- 作業系統
- win7
- 軟體版本
- 2003,2010
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2010-5-13
- 最後登錄
- 2022-12-8
|
回復 3# clio
一筆,多筆,無資料,可用網頁上有幾個table判斷
下方是多筆- Sub test()
- Cells.ClearContents
- '設定引用項目 microsoft html object library
- Dim bPostData() As Byte
- Dim URL, strurlHeaders As String
- Dim i, j As Integer
- Dim hDoc As New MSHTML.HTMLDocument
- Dim objIE As Object
- spath = ThisWorkbook.Path
- URL = "https://www.digikey.tw/products/en?keywords=ULN2003AFWG"
- ' Stop
- strurlHeaders = "Content-Type: application/x-www-form-urlencoded"
- Set objIE = CreateObject("InternetExplorer.Application")
- With objIE
- .Visible = True
- .Navigate URL, , , bPostData, strurlHeaders
- Do While .readyState <> 4: DoEvents: Loop
- Set hTable = .Document.getElementsByTagName("table")(0)
- With ActiveSheet
- For i = 0 To hTable.Rows.Length - 1
- For j = 0 To hTable.Rows(i).Cells.Length - 1
- .Cells(i + 1, j + 1) = hTable.Rows(i).Cells(j).innerText
- Next
- Next
- End With
- End With
- objIE.Quit
- Set objIE = Nothing
- End Sub
複製代碼 |
|
|
|
|
|
|
暱稱: joey0415
中學生
- 帖子
- 361
- 主題
- 57
- 精華
- 0
- 積分
- 426
- 點名
- 0
- 作業系統
- win7
- 軟體版本
- 2003,2010
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2010-5-13
- 最後登錄
- 2022-12-8
|
|
|
|
|
|
|
暱稱: joey0415
中學生
- 帖子
- 361
- 主題
- 57
- 精華
- 0
- 積分
- 426
- 點名
- 0
- 作業系統
- win7
- 軟體版本
- 2003,2010
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2010-5-13
- 最後登錄
- 2022-12-8
|
本帖最後由 joey0415 於 2019-8-29 21:10 編輯
回復 7# clio
直接調用Application.Wait
VBA內的Application Object 有 Wait 可供使用,若要暫停1秒,可編碼:
Application.Wait Now + TimeValue("00:00:01")
加上等待時間試試
有的網站要等
秒數不一定
公開資訊站goodinfo等,爬太快都會鎖ip
如果還不行
再請益別的高手 |
|
|
|
|
|
|