Excel VBA Web Scraper-网页在输入新的搜索参数后恢复为第一个搜索参数

Excel VBA Web Scraper-网页在输入新的搜索参数后恢复为第一个搜索参数,excel,vba,search,web-scraping,Excel,Vba,Search,Web Scraping,这是对一个问题的后续行动。我完成了创建刮板的工作,该刮板根据名字/姓氏和城市/州将年龄和地址抓取到网站中。真正奇怪的是,无论我通过宏和搜索输入什么,它都会恢复为我运行测试时使用的名称和城市/州。我试图清除cookies和缓存,但没有成功。这是输入搜索参数的web scraper的正常问题吗 我不认为这与我的代码有任何关系,除非我应该使用一个清晰的history/cache命令,但以下是我的代码: Sub HGScrape() Const sURL As String = "https:

这是对一个问题的后续行动。我完成了创建刮板的工作,该刮板根据名字/姓氏和城市/州将年龄和地址抓取到网站中。真正奇怪的是,无论我通过宏和搜索输入什么,它都会恢复为我运行测试时使用的名称和城市/州。我试图清除cookies和缓存,但没有成功。这是输入搜索参数的web scraper的正常问题吗

我不认为这与我的代码有任何关系,除非我应该使用一个清晰的history/cache命令,但以下是我的代码:

Sub HGScrape()

    Const sURL As String = "https://www.healthgrades.com/"

    Dim ie As New InternetExplorer
    Dim loop_ctr As Integer

    With ie

        .Visible = False
        .Navigate sURL
        While .Busy Or .ReadyState < 4: DoEvents: Wend
        .document.getElementById("search-term-selector-child"). _
                    Value = ActiveSheet.Range("A2")
        .document.getElementById("search-location-selector-child"). _
                    Value = ActiveSheet.Range("B2")
        .document.getElementsByClassName("submiter__text")(0).Click
        While .Busy Or .ReadyState < 4: DoEvents: Wend

        ActiveSheet.Range("C2").Value = .document.getElementsByClassName("uCard__age")(0).innerText
        While .Busy Or .ReadyState < 4: DoEvents: Wend
        ActiveSheet.Range("D2").Value = .document.getElementsByClassName("address--street")(0).innerText
        While .Busy Or .ReadyState < 4: DoEvents: Wend
        ActiveSheet.Range("E2").Value = .document.getElementsByClassName("address--city-state")(0).innerText

        For loop_ctr = 3 To 10

            .document.getElementById("uSearch-search-term-selector-child"). _
                        Value = ActiveSheet.Range("A" & loop_ctr)
            .document.getElementById("uSearch-search-location-selector-child"). _
                        Value = ActiveSheet.Range("B" & loop_ctr)
            .document.getElementsByClassName("submiter__text")(0).Click
            While .Busy Or .ReadyState < 4: DoEvents: Wend

            ActiveSheet.Range("C" & loop_ctr).Value = .document.getElementsByClassName("uCard__age")(0).innerText
            While .Busy Or .ReadyState < 4: DoEvents: Wend
            ActiveSheet.Range("D" & loop_ctr).Value = .document.getElementsByClassName("address--street")(0).innerText
            While .Busy Or .ReadyState < 4: DoEvents: Wend
            ActiveSheet.Range("E" & loop_ctr).Value = .document.getElementsByClassName("address--city-state")(0).innerText
            While .Busy Or .ReadyState < 4: DoEvents: Wend

        Next loop_ctr

    End With

    Set ie = Nothing

End Sub
Sub-hgsrap()
Const sURL作为字符串=”https://www.healthgrades.com/"
Dim ie成为新的InternetExplorer
Dim loop_ctr为整数
与ie
.Visible=False
.导航sURL
当.Busy或.ReadyState<4:DoEvents:Wend时
.document.getElementById(“搜索词选择器子项”)_
值=ActiveSheet.Range(“A2”)
.document.getElementById(“搜索位置选择器子项”)_
值=ActiveSheet.Range(“B2”)
.document.getElementsByClassName(“提交者文本”)(0)。单击
当.Busy或.ReadyState<4:DoEvents:Wend时
ActiveSheet.Range(“C2”).Value=.document.getElementsByClassName(“uCard__年龄”)(0.innerText
当.Busy或.ReadyState<4:DoEvents:Wend时
ActiveSheet.Range(“D2”).Value=.document.getElementsByClassName(“地址--街道”)(0).innerText
当.Busy或.ReadyState<4:DoEvents:Wend时
ActiveSheet.Range(“E2”).Value=.document.GetElementsByCassName(“地址--城市-州”)(0)。innerText
对于回路_ctr=3到10
.document.getElementById(“uSearch搜索词选择器子项”)_
Value=ActiveSheet.Range(“A”&loop\u ctr)
.document.getElementById(“uSearch搜索位置选择器子项”)_
Value=ActiveSheet.Range(“B”和loop\u ctr)
.document.getElementsByClassName(“提交者文本”)(0)。单击
当.Busy或.ReadyState<4:DoEvents:Wend时
ActiveSheet.Range(“C”和loop_ctr).Value=.document.getElementsByClassName(“uCard_uAge”)(0).innerText
当.Busy或.ReadyState<4:DoEvents:Wend时
ActiveSheet.Range(“D”和loop_ctr).Value=.document.getElementsByClassName(“地址--街道”)(0).innerText
当.Busy或.ReadyState<4:DoEvents:Wend时
ActiveSheet.Range(“E”和loop\u ctr).Value=.document.getElementsByClassName(“地址--城市-州”)(0).innerText
当.Busy或.ReadyState<4:DoEvents:Wend时
下一个循环中心
以
设置ie=无
端接头

我能够调整URL并跳过输入/搜索过程,这要归功于。实际的刮片部分开始抛出错误,因为它试图在站点完全加载之前刮片,所以我在.busy或.readystate<4时插入了
,但这无法正常工作,因此我还添加了
应用程序。Wait
命令。不确定这是否是处理站点延迟的最有效的方法,但只要我在合理的时间内完成这项工作,对我来说就可以了。电子表格URL公式和VBA代码如下:

=”https://www.healthgrades.com/usearch?what=&H2&%20&J2&&where=“&M2&%2C%20”&N2&“&pageNum=1&ISSTANDONE=true&city=“&M2&”&state=“&N2

Sub HGScrape2()

Dim ie As New InternetExplorer
Dim loop_ctr As Integer
Dim sURL As String

With ie

For loop_ctr = 2 To 637

sURL = ActiveSheet.Range("A" & loop_ctr).Value

    .Visible = False
    .Navigate sURL

    While .Busy Or .ReadyState < 4: DoEvents: Wend
    Application.Wait (Now + TimeValue("0:00:5"))
    ActiveSheet.Range("C" & loop_ctr).Value = .document.getElementsByClassName("uCard__age")(0).innerText
    While .Busy Or .ReadyState < 4: DoEvents: Wend
    ActiveSheet.Range("D" & loop_ctr).Value = .document.getElementsByClassName("address--street")(0).innerText
    While .Busy Or .ReadyState < 4: DoEvents: Wend
    ActiveSheet.Range("E" & loop_ctr).Value = .document.getElementsByClassName("address--city-state")(0).innerText
    While .Busy Or .ReadyState < 4: DoEvents: Wend

Next loop_ctr

End With

End Sub
Sub-hg2()
Dim ie成为新的InternetExplorer
Dim loop_ctr为整数
作为字符串的Dim sURL
与ie
对于回路_ctr=2至637
sURL=ActiveSheet.Range(“A”&loop\u ctr).Value
.Visible=False
.导航sURL
当.Busy或.ReadyState<4:DoEvents:Wend时
Application.Wait(现在+时间值(“0:00:5”))
ActiveSheet.Range(“C”和loop_ctr).Value=.document.getElementsByClassName(“uCard_uAge”)(0).innerText
当.Busy或.ReadyState<4:DoEvents:Wend时
ActiveSheet.Range(“D”和loop_ctr).Value=.document.getElementsByClassName(“地址--街道”)(0).innerText
当.Busy或.ReadyState<4:DoEvents:Wend时
ActiveSheet.Range(“E”和loop\u ctr).Value=.document.getElementsByClassName(“地址--城市-州”)(0).innerText
当.Busy或.ReadyState<4:DoEvents:Wend时
下一个循环中心
以
端接头

EU显然被拒绝访问。多么粗鲁;-)您不需要所有这些While.Busy或.ReadyState<4:DoEvents:Wend中间设置值。什么会还原为我运行测试时使用的名称和城市/州?您是否手动输入了信息,并且无论您通过vba输入了什么,都会记住这些信息?@QHarr我会检查一下。是的,所有的测试都是通过宏和电子表格引用来完成的。真奇怪。幸运的是,由于这篇文章的链接,我可以使用动态URL绕过搜索按钮。我将重写,看看这是否解决了我的问题@QHarr我无法想象英国现在在脱欧和最近的反模因法规方面是什么样子。谢谢你的帮助!