VBA - 系统不支持指定的编码

时间:2016-07-21 19:06:29

标签: excel-vba web-scraping vba excel

运行时错误' - 1072896658(c00ce56e)':系统不支持指定的编码

我试图从这个网站提取定价数据:http://web.tmxmoney.com/pricehistory.php?qm_symbol=^TTUT。我一直收到错误"运行时错误' - 1072896658(c00ce56e)':系统不支持指定的编码"。

我已使用下面提供的代码从大多数网站提取HTML数据。这是唯一一个给我这个错误的人。我认为我可能会因为网站使用Javascript而收到错误,但我不确定。它肯定与"标签有关。网页布局。我可以使用标题为#34; Quote"的第一个标签中的代码。 (http://web.tmxmoney.com/quote.php?qm_symbol=^TTUT)但不是其他标签。

 Option Explicit

  Sub TEST_PULL()

    Dim Look_String As String
    Dim Web_HTML As String
    Dim HTTP_OBJ As New MSXML2.XMLHTTP60

    Dim xa As Long
    Dim xb As Long

    Select Case HTTP_OBJ.Status
       Case 0: Web_HTML = HTTP_OBJ.responseText
       Case 200: Web_HTML = HTTP_OBJ.responseText **'THE ERROR IS CAUSED HERE**
       Case Else: GoTo ERROR_LABEL:
    End Select

    Look_String = "quote-tabs-content"
    xa = IIf(IsNumeric(Look_String), Look_String, InStr(Web_HTML, Look_String))
    xb = IIf(xa + 32767 <= Len(Web_HTML), 32767, Len(Web_HTML) - xa + 1)
    Web_HTML = Mid(Web_HTML, xa, xb)

  ERROR_LABEL:

  End Sub

有人可以帮我弄清楚

  1. 为什么会这样?
  2. 如何成功提取定价数据
  3. 这将是一个巨大的帮助!感谢!!!

1 个答案:

答案 0 :(得分:0)

不是你,而是他们。

导致错误的页面的响应标头指定了不存在的编码:ISO-8559-1。 ISO 8559与文本编码无关 - 它实际上与衣服的尺寸有关。这几乎肯定是ISO-8859-1。

Chrome developer tools window showing the response headers from a webpage. The encoding of ISO-8559-1 is circled in red

成功读取的引用页面具有正确的ISO-8859-1编码。

要解决此问题,请在解码前使用包含原始字节的responseBody property。然后StrConv function可以尝试将这些字节转换为Unicode字符串(尽管这可能无法在所有情况下产生正确的结果),如下所示:

arr