Vba 网页抓取过滤结果

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:

所以我是新来的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: 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