0

这个网站上有很多关于如何使用 Excel VBA 读取网站中的标签和表格的文章,但我被困在这里。

输入邮政编码后,该网站会为我提供营业地点。(“相对于我的邮政编码最近的位置在哪里”)

我设法导航到该站点,输入邮政编码并单击提交:

Dim Browser As SHDocVw.InternetExplorer
Dim HTMLDoc As MSHTML.HTMLDocument


Set Browser = New SHDocVw.InternetExplorer                     ' create a browser
Browser.Visible = True                                   ' make it visible
Application.StatusBar = ".... opening page"
Browser.navigate "https://www.thewebsite.com"            ' navigate to page
WaitForBrowser Browser, 1                                ' wait for completion or timeout

Application.StatusBar = "gaining control over DOM object"
Set HTMLDoc = Browser.document                         ' load the DOM object
WaitForBrowser Browser, 1

HTMLDoc.getElementById("ZipCode").Value = "28278"
HTMLDoc.getElementById("localTeamZipSubmit").Click

站点打开,相关内容如下所示:

 <div>
        <div class="columns">
            <div class="column boldText paddingFive" style="padding-left: 20px; width: 70px;">
                Location:
            </div>
            <div class="column paddingTopFive">CHARLOTTE</div>
        </div>
        <div class="columns">
            <div class="column boldText paddingFive" style="padding-left: 20px; width: 120px;">
                Location Number:
            </div>
            <div class="column paddingTopFive">102340</div>
        </div>
        <div class="columns">
            <div class="column boldText paddingTopFive paddingLeftTwenty" style="vertical-align: top;">
                Address:
            </div>
            <div class="column paddingTopFive paddingLeftTwenty">
                <div>8848 Main St.</div>
                <div>Suite F</div>
                <div></div>
                <div>Charlotte, NC 27218</div>
            </div>
        </div>
            <div class="columns">
                <div class="column boldText paddingFive" style="padding-left: 20px; width: 70px;">
                    Phone:
                </div>
                <div class="column paddingTopFive">(704) 911-4440</div>
            </div>
                        <div class="columns">
                <div class="column boldText paddingFive" style="padding-left: 20px; width: 70px;">
                    Fax:
                </div>
                <div class="column paddingTopFive">(704) 911-4441</div>
            </div>
    </div>

如您所见,此部分没有表,没有反复使用的命名标签和类。我还无法阅读此信息。我很乐意将整个 blob 变成一个字符串并解析它”

“文本 = HTMLDoc.getEverything()”

非常感谢你的帮助!!!


与此同时,我发现了另一个我修改过的代码片段,但我被困在了同一点:

发布和提交作品,但如何获得答案....

 {   Private Sub PostalCodes()
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
On Error GoTo errHandler
ie.Visible = 1

With ie
    .navigate "https://www.pattersondental.com/ContactUs/MyLocalTeam"
    Do While .busy: DoEvents: Loop
    Do While .ReadyState <> 4: DoEvents: Loop
    With .document.Forms("GetBranchFromZipForm")
        .ZipCode.Value = "28273"
        .submit
    End With
'    Do While Not CBool(InStrB(1, .document.URL, _
 '       "cp_search_response-e.asp"))
 '       DoEvents
  '  Loop
    Do While .busy: DoEvents: Loop
    Do While .ReadyState <> 4: DoEvents: Loop
'    MsgBox .document.all.tags("Colums").Item(1).Rows(1).Cells(1).innerText
     MsgBox .document.all.tags("Colums").innerText
  '  MsgBox .document}

我想我必须搜索“如何剖析 HTML 文档”...

添加在:

似乎 ie 是一个有效项目(在监视窗口中) IE.Document 是空的......为什么会这样,该网站仍然存在新数据。我什至尝试了另一个在 IE 中查找打开网站的代码片段,它找到了该网站(具有正确的数据),但文档仍然是空的,并且 getelementBY... 当然没有找到任何东西。我要开始喝了...

4

1 回答 1

0

我不敢相信。

经过3天的戳,我发现了这个:

  With ActiveSheet.QueryTables.Add(Connection:="URL;     
  https://www.pattersondental.com/ContactUs/MyLocalTeam",   
  Destination:=Range("A1"))
 .PostText = "ZipCode=70032"
 .RefreshStyle = xlOverwriteCells
 .SaveData = True
 .Refresh

我不会假装理解它为什么起作用,但确实如此。

约翰,我还是会看看你的建议。谢谢

于 2018-05-27T02:17:18.743 回答