提问人:SparkyVBA 提问时间:10/30/2023 最后编辑:SparkyVBA 更新时间:10/31/2023 访问量:53
VBA - 网页定价抓取工具,创建URL循环
VBA - Web pricing scraper, creating URL loop
问:
我希望有人可以帮助像我这样的初学者。 我正在尝试创建一个网络爬虫,该爬虫从 B 列中的 URL 中获取定价。 我想创建一个循环,以便将 HTML 中的价格从“B”列中的 URL 提取到“C”列。
由于某种原因,我的代码没有运行,并给出了“自动化错误”。 当我将单元格指定为“范围”时,我的代码无需循环即可工作。但我不想重复代码 50 次。
有人可以帮我修复我的循环吗?:)
(出于隐私原因,我隐藏了“ClassName”)
Sub FetchPrices_data()
Dim Model As String
Dim request As Object
Dim response As String
Dim html As New HTMLDocument
Dim Price As String
Dim i As Integer
For i = 1 To 50
Model = Range("B" & i).Value
Set request = CreateObject("MSXML2.XMLHTTP")
request.Open "GET", Model, False
request.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
request.send
response = StrConv(request.responseBody, vbUnicode)
html.body.innerHTML = response
Price = html.getElementsByClassName(" Hidden ").Item(0).innerText
Range("C" & i).Value = Price
Next i
End Sub
答:
0赞
SparkyVBA
10/30/2023
#1
谢谢你的提示!现在已经解决了。
我还添加了一个错误指示器。
以下是我为解决问题所做的工作:
Sub FetchPrices_data()
Dim Model As String
Dim request As Object
Dim response As String
Dim html As New HTMLDocument
Dim Price As String
Dim i As Integer
For i = 2 To 35
Model = Range("B" & i).Value
Set request = CreateObject("MSXML2.XMLHTTP")
If request Is Nothing Then
Range("B" & i).Value = "URL Error."
Exit Sub
End If
request.Open "GET", Model, False
request.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
request.send
response = StrConv(request.responseBody, vbUnicode)
html.body.innerHTML = response
If Not html.getElementsByClassName(" *Hidden* ").Item(0) Is Nothing Then
Price = html.getElementsByClassName(" *Hidden* ").Item(0).innerText
Range("C" & i).Value = Price
Else
Range("C" & i).Value = "URL Error"
End If
Next i
End Sub
评论
Model