【问题标题】:VBA - MSXML2.ServerXMLHTTP GET Request - Server status 416VBA - MSXML2.ServerXMLHTTP GET 请求 - 服务器状态 416
【发布时间】:2016-11-04 03:17:05
【问题描述】:

我想从网站获取 HTML 文档结构,以便从中提取信息。我使用 GET 请求,但它返回 416 状态。在其他网站上,这种简单的 GET 请求足以得到响应。

Dim oXMLHTTP As New MSXML2.ServerXMLHTTP
Dim htmlObj As New HTMLDocument

With oXMLHTTP
    .Open "GET", "http://www.manta.com/ic/mtqyfk0/ca/riverbend-holdings-inc", False
    .send

    If .ReadyState = 4 And .Status = 200 Then
        Set htmlObj = CreateObject("htmlFile")
        htmlObj.body.innerHTML = .responseText
        'do things
    End If

End With

【问题讨论】:

  • 修复 416 错误和抓取页面是完全不同的事情。您可能应该提出一个新问题,以便标题和标签有意义。

标签: vba xmlhttprequest


【解决方案1】:

您应该可以只使用XMLHTTP 而不是ServerXMLHTTP

  Dim oXMLHTTP As New MSXML2.XMLHTTP60

为我返回200

【讨论】:

  • MSXML2.XMLHTTP 和 MSXML2.XMLHTTP60 之间是否有相当大的区别?我在其他网站上对它们进行了性能测试,它们的速度相同。 ServerXMLHTTP 稍微快了 2 倍,但遗憾的是在这种情况下我无法使用它。
  • IIRC 这取决于您引用的库的版本。我引用了 V.6,所以 XMLHTTP60 类是可用的。您可以使用ServerXMLHTTP,但您需要提供网站似乎需要的标头,并且XMLHTTP 正在发送。
  • 我能够让ServerXMLHTTP 使用.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0" 工作
猜你喜欢
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 2020-01-15
  • 1970-01-01
  • 1970-01-01
  • 2023-01-02
相关资源
最近更新 更多