【问题标题】:http response text fetching incomplete htmlhttp响应文本获取不完整的html
【发布时间】:2015-10-09 15:49:26
【问题描述】:

我在 excel vba 中有一个用于获取网页源 html 的代码(如下所示)。代码工作正常,但它获取的 html 不完整。当行webpageSource = oHttp.ResponseText 执行时,变量webpageSource 包含“DOCTYPE html PUBLIC ....... etc etc 直到结束/html”,这就是它应该的样子。到这里为止一切都是正确的。但是下一行debug.print webpageSource 只打印来自“(adsbygoogle = window.adsbygoogle || []).push({}); ...... etc etc 直到结束 /html”的一半 html 为什么会这样?我想从返回的响应文本中找到一些字符串,但由于它不完整,我无法这样做。有人能解释一下吗?

谢谢

Sub source()
    Dim oHttp As New WinHttp.WinHttpRequest
    Dim sURL As String
    Dim webpageSource As String
    sURL = "http://www.somewebsite.com"
    oHttp.Open "GET", sURL, False
    oHttp.send
    webpageSource = oHttp.ResponseText
    debug.print webpageSource
End Sub

编辑: 我也试过 .WaitForResponse 没有帮助:(

【问题讨论】:

  • 当您将webpagesource 放入单元格时会发生什么?它是否将所有文本都放在那里?或者甚至是一个word文档,因为它可能适合一个单元格?
  • 我还没有把它放到一个单元格中。在vba编辑器中,当我使用F8逐行执行代码时,当我将鼠标移到变量webpagesource上时,它会显示以DOCTYPE开头的内容,所以我假设它正在捕获完整的html但是当我看到debug.print 的结果,它只给了我一半的源代码
  • 好吧,这可能很明显,但是您是否使用即时窗口中的滚动条来查看文本的开头是否真的在您所看到的上方?此外,如果您将行写入单元格或 word 文档,您可以确认您确实得到了所有内容。
  • 是的,我正在使用滚动条,我想确认它是不完整的。如果文本很长,excel会去掉初始部分吗?您可以编辑我的代码以将网页源的内容写入 word 或文本文档吗?
  • 你刚刚在下面的答案中得到了那只手:)

标签: vba excel responsetext winhttprequest


【解决方案1】:

Debug.Print 和/或即时窗口有限制。但是他们没有记录。

所以尝试将webpageSource 写入文件:

Sub source()
    Dim oHttp As New WinHttp.WinHttpRequest
    Dim sURL As String
    Dim webpageSource As String
    sURL = "http://www.google.com"
    oHttp.Open "GET", sURL, False
    oHttp.send
    webpageSource = oHttp.ResponseText

    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set oFile = FSO.CreateTextFile("webpageSource.txt")
    oFile.Write webpageSource
    oFile.Close

    Shell "cmd /C start webpageSource.txt"

End Sub

文件是否包含所有内容?

【讨论】:

  • 是的,它确实包含所有内容。可能是直接窗口在 debug.print 时剥离了它的初始部分。我可以请你看看我的另一个线程吗? stackoverflow.com/questions/33030951/… 谢谢
猜你喜欢
  • 1970-01-01
  • 2022-01-10
  • 2012-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-16
  • 2020-05-15
  • 1970-01-01
相关资源
最近更新 更多