检索网站数据Excel VBA

首先,我对VBA非常了解,并且只是在网上提出其他问题的解决scheme。 我所拥有的是一个macros,它将IE打开到指定的URL,将文本input到search中,加载结果,然后通过更具体的search值循环search。

我想要做的是将search结果刮到excel中。 但是,结果不会出现在生成的HTML代码中,而是由网站上的脚本生成。

我正在search的网页示例: https : //www.gamestop.com/PickUpAtStore/75083/0/917850

加载时,结果在页面上find,但不在页面源中。 看看页面的源代码,看起来是一个脚本,它将结果拉入:

<script id="stores" type="text/x-handlebars-template"> {{#if this}} <ul> {{#each this}} <li id="{{StoreNumber}}|{{#if true}}917850 {{/if}}" class="{{#if false}}checkOnly{{/if}}""> <div class="fluidWrapper ats-storelist" id="{{StoreNumber}}"> <div class="contactInfo"> <div class="title ats-storetitle">{{DisplayName}}</div> <div class="address ats-storeaddress"> {{{AddressStreet}}}<br />{{AddressCityStateZip}} </div> <div class="phoneNumber ats-storephone"> {{Phone}} </div> </div> <div class="rightInfo"> <div class="distance ats-storedistance">{{Distance}} {{#if true}}<i id="showHoldOptions_{{StoreNumber}}" class="{{#if false}} plus_{{/if}}icon"></i>{{/if}}</div> </div> </div> .................. 

理想情况下,我想要发生的是当结果被加载时,商店名称,地址和电话号码从A4,B4,C4开始放入Excel,并且将每个商店添加到下一行。

我在完全错误的地方看这些结果吗? 我感谢任何帮助解决这个问题。

编辑添加当前macros:

 Sub Search_Cell() Dim ie As Object Dim lRow As Long Dim URL As Range Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True For Each URL In Range("B1") ie.navigate URL.Value Application.StatusBar = "Submitting" While ie.Busy DoEvents Wend Next For lRow = 1 To 89 With ie.document .all("puas_search").Value = Sheets("Zipcodes").Range("A" & lRow).Value .getElementById("puas_search").Focus End With Application.SendKeys ("~") Application.Wait Now + #12:00:02 AM# 'wait 2 seconds ' Get results of search ' Add Store name to A4, Address to B4, Phone# to C4 (but for following searches start at the next empty row) ' Add following results to next row Next lRow 'loop to next search ie.Quit Set ie = Nothing MsgBox "Done" End Sub 

我解决了这个问题,我完全错误的认为,结果不能从HTML中删除。 谢谢@Tigregalis推动我正确的方向。

下面是代码片段,它将我需要的数据提取出来,放在excel的正确位置,然后移动到下一行。

  Set HTMLDoc = IE.document Set Stores = HTMLDoc.getElementsByClassName("contactInfo") For Each Store In Stores ColNum = 1 For Each Name In Store.Children Cells(RowNum, ColNum) = Name.innerText ColNum = ColNum + 1 Next Name RowNum = RowNum + 1 Next Store