【问题标题】:Extracting Data from URL VBA getting IE not suppoting从 URL VBA 中提取数据使 IE 不支持
【发布时间】:2021-08-05 17:36:18
【问题描述】:

我一直在使用以下 Excel VBA 宏从网站带回数据。直到几天前该网站停止支持 IE 时,它才能正常工作。当然宏现在失败了,因为网页上没有数据可以带回 Excel,有没有办法拥有“获取方法”(MSXML2.XMLHTTP)

这是我的代码

    Public Sub GGGG()
        Dim MSX As Object
        Dim HTML As HTMLDocument
        Dim URL As String
        Dim UrlResponse As String
        Dim N As Long
        Dim sht1, sht2 As Worksheet

       ' On Error Resume Next
        Set MSX = CreateObject("MSXML2.XMLHTTP")
        Set HTML = New HTMLDocument
        

        URL = "https://www.justdial.com/Agra/Yogi-General-Store-Opp-Eclave-Satiudum-Sadar-Bazaar/0562P5612-5612-120207212812-H5I2_BZDET"
                    
                    With MSX
                        .Open "GET", URL, False
                        .setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
                        .send
                        UrlResponse = StrConv(.responseBody, vbUnicode)
                    End With

                       ActiveCell.Offset(0, 1) = UrlResponse

                    
    End Sub

我得到类似的回应

错误 处理您的请求时出错。

参考#97.ec8a2c31.1621136928.281f3ca8

请任何人都可以支持我在 IE 不支持时如何获取数据 我不是编码专家

【问题讨论】:

  • 这是网站而不是浏览器。
  • 我尝试了各种浏览器和非浏览器的方法都无济于事。
  • 因为我认为这是我会拒绝的网站。我尝试了不同的语言 - 结果相同。我不知道它是否会影响所有用户或区域。我强烈怀疑是这个网站。
  • 尝试通过主页上的搜索导航到该页面。
  • 对我来说正确的 url 是使用https://www.justdial.com/Agra/Yogi-General-Store-Sadar-Bazaar/0562P5612-5612-120207212812-H5I2_BZDET 这在除 IE 之外的其他浏览器中都可以正常工作。

标签: excel vba web-scraping xmlhttprequest


【解决方案1】:

好的,试试这个,使用 vba 和 selenium 从该站点获取标题和投票。

Sub FetchInfo()
    Dim driver As Object, oTitle As Object
    Dim oVotes As Object
    
    Set driver = CreateObject("Selenium.ChromeDriver")
    
    driver.get "https://www.justdial.com/Agra/Yogi-General-Store-Opp-Eclave-Satiudum-Sadar-Bazaar/0562P5612-5612-120207212812-H5I2_BZDET"
    Set oTitle = driver.FindElementByCss("span.item > span", Raise:=False, timeout:=10000)
    Set oVotes = driver.FindElementByCss("span.rtngsval > span.votes", Raise:=False, timeout:=10000)
    Debug.Print oTitle.Text, oVotes.Text
End Sub

【讨论】:

    【解决方案2】:

    以后网页不再支持IE的时候,你可以用谷歌浏览器试试scrape,安装新的插件,插件的安装和写法请看下面的链接在 VBA 中。然而,在我看来,最简单的工作方式是使用 Uipath 免费社区版,它适用于所有类型的网络浏览器。

    VBA 指南: https://www.wiseowl.co.uk/vba-macros/videos/vba-scrape-websites/web-scraping-selenium-chrome/

    Selenium 的 VBA 库安装: https://code.google.com/archive/p/selenium-vba/downloads

    【讨论】:

    • 我尝试使用 selenium Chrome ...同样的问题仍在发生
    • 很难听,如果 VBA 给您带来很多麻烦,还有其他工具可以随时为您提供帮助。附带 Web 自动化,VBA 并不总是我的首选工具。祝你好运,希望你能解决问题!!
    【解决方案3】:

    您可能需要将 Feature Browser Emulation 设置为 zero,Daniel 在此详述:

    Everything You Never Wanted to Know About the Access WebBrowser Control

    也就是说,即使在 Edge Chromium 中打开您的网址也会失败,因此该网站可能会出现一般故障。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多