Vba 网页抓取过滤结果
所以我是新来的vba,我得到的价格是哪个网站。我得到的价格很好,但我想过滤结果。如果结果小于2,不要写结果。 我正在使用以下代码:Vba 网页抓取过滤结果,vba,excel,Vba,Excel,所以我是新来的vba,我得到的价格是哪个网站。我得到的价格很好,但我想过滤结果。如果结果小于2,不要写结果。 我正在使用以下代码: y = 1 For x = 1 To 21 objIE.navigate "http://example.com/market/search?appid=578080#p" & x & "x_name_asc" Do While objIE.Busy = True Or objIE.readyState <> 4:
y = 1
For x = 1 To 21
objIE.navigate "http://example.com/market/search?appid=578080#p" & x & "x_name_asc"
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
MsgBox "Checking"
For Each itemEle In objIE.document.getElementsByClassName("market_listing_row_link")
Prc1 = itemEle.getElementsByClassName("market_listing_right_cell market_listing_their_price")(0).getElementsByTagName("span")(1).textContent
Sheets("Sheet2").Range("D" & y).Value = Prc1
y = y + 1
Next
Next x
例如,在excel中:
D1 : $20.55 USD
D2 : $6.37 USD
D3 : $1.26 USD '-------> i am tring to dont get this
尝试以下方法。因为返回的类型之一不是字符串,所以是临时的 这个 确保已从返回值中提取数字部分,以便与值2进行比较
Option Explicit
Sub testing()
Dim x As Long, y As Long, Prc1 As String
Dim objIE As Object
Dim itemEle As IHTMLElement
Set objIE = CreateObject("internetexplorer.application")
y = 1
For x = 1 To 21
objIE.navigate "http://steamcommunity.com/market/search?appid=578080#p" & x & "x_name_asc"
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
For Each itemEle In objIE.document.getElementsByClassName("market_listing_row_link")
On Error Resume Next
Prc1 = itemEle.getElementsByClassName("market_listing_right_cell market_listing_their_price")(0).getElementsByTagName("span")(1).textContent
If CDbl(Split(Split(Prc1, "$")(1), " ")(0)) > 2 Then
Sheets("Sheet2").Range("D" & y).Value = Prc1
y = y + 1
End If
On Error GoTo 0
Next
Next x
objIE.Quit
End Sub
选项显式
子测试()
尺寸x为长,y为长,Prc1为字符串
模糊对象
根据IHTMLElement对项目进行调暗
Set objIE=CreateObject(“internetexplorer.application”)
y=1
对于x=1到21
objIE.navigate“http://steamcommunity.com/market/search?appid=578080#p&x&“x\u名称\u asc”
Do While objIE.Busy=True或objIE.readyState 4:DoEvents:Loop
对于objIE.document.getElementsByClassName(“市场\列表\行\链接”)中的每个itemEle
出错时继续下一步
Prc1=itemEle.getElementsByClassName(“市场\上市\权利\单元市场\上市\价格”)(0)。getElementsByTagName(“span”)(1)。textContent
如果CDbl(拆分(拆分(Prc1,“$”)(1),“)(0))>2,则
图纸(“图纸2”)。范围(“D”和“y”)。值=Prc1
y=y+1
如果结束
错误转到0
下一个
下一个x
objIE,退出
端接头
作为提示:您指向store.steampowered.com
的链接实际上指向了steam.powered.com
,这是一个不存在的域。获取错误:Rum时间错误“13”:类型不匹配调试是:Set Prc1=itemEle.getElementsByClassName(“market\u listing\u right\u cell market\u listing\u price”)(0)。getElementsByTagName(“span”)(1).textContent
d1:$20.55美元d2:$6.37美元d3:$1.26美元------->它低于2我用上面的脚本没有得到这个结果。我得到的最低值是$4.64美元。我想知道这些值是否在动态变化,我错过了一个错误也许@TimWilliams会来解围
CDbl(Split(Split(Prc1, "$")(1), " ")(0)) > 2
Option Explicit
Sub testing()
Dim x As Long, y As Long, Prc1 As String
Dim objIE As Object
Dim itemEle As IHTMLElement
Set objIE = CreateObject("internetexplorer.application")
y = 1
For x = 1 To 21
objIE.navigate "http://steamcommunity.com/market/search?appid=578080#p" & x & "x_name_asc"
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
For Each itemEle In objIE.document.getElementsByClassName("market_listing_row_link")
On Error Resume Next
Prc1 = itemEle.getElementsByClassName("market_listing_right_cell market_listing_their_price")(0).getElementsByTagName("span")(1).textContent
If CDbl(Split(Split(Prc1, "$")(1), " ")(0)) > 2 Then
Sheets("Sheet2").Range("D" & y).Value = Prc1
y = y + 1
End If
On Error GoTo 0
Next
Next x
objIE.Quit
End Sub