何来修复我在vba中错误循环的循环?

时间:2017-08-08 07:33:00

标签: vba web-scraping

我编写了一个脚本,使用我的vba脚本反向搜索从某个网站获取数据,该脚本是与selenium一起编写的。它适用于第一次搜索但是当第一个循环用于第二个项目时它再次取代A1而不是A2而第二个循环选择正确的项目,在这种情况下是B2。更具体地说,第一次需要A1,B1,但第二次需要A1,B2代替A2,B2。我如何修复此循环以便它并行拾取项目。以下是我的尝试:

Sub HCAD()
    Dim driver As New ChromeDriver, post As Range, elem As Range
    For Each post In Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
        For Each elem In Range("B1:B" & Cells(Rows.Count, 2).End(xlUp).Row)
            With driver
                .Get "http://hcad.org/quick-search/"
                .Wait 500
                .SwitchToFrame .FindElementByTag("iframe")
                .FindElementById("s_addr").Click
                .FindElementByName("stnum").SendKeys (post)
                .FindElementByName("stname").SendKeys (elem)
                .FindElementByXPath("//input[@value='Search']").Click
                .Wait 1000
            .SwitchToFrame .FindElementByTag("iframe")
            i = i + 1: Cells(i, 3) = .FindElementByXPath("/html/body/table/tbody/tr/td/table[5]/tbody/tr[2]/td[1]/table/tbody/tr/th").Text
            End With
        Next elem
    Next post
    driver.Quit
End Sub
不过,搜索标准是:

A1. 8227  B1. FINDLAY ST
A2. 6330  B2. LAUTREC DR

1 个答案:

答案 0 :(得分:2)

这是你的循环嵌套的方式

有2行,你运行4次搜索...... A1B1 .. A1B2 .. A2B1 .. A2B2

在A列上只使用一个循环(“post”循环)

将第二个发送密钥更改为:.FindElementByName("stname").SendKeys (post.offset(0,1))