VB+XMLHTTP即时获取网页源码

添加一个时钟控件,运行后就可以在立即窗口看到调试信息。

Option Explicit

Function GetBody(Url)
	Dim ObjXML
	Set ObjXML = CreateObject("Microsoft.XMLHTTP")
	With ObjXML
		.Open "Get", Url, False, "", ""
		.SEnd
		GetBody = .ResponseBody
	End With
	GetBody = BytesToBstr(GetBody, "UTF-8")
	Set ObjXML = Nothing
End Function
  
Function BytesToBstr(strBody, CodeBase)
	Dim ObjStream
	Set ObjStream = CreateObject("Adodb.Stream")
	With ObjStream
		.Type = 1
		.Mode = 3
		.Open
		.Write strBody
		.Position = 0
		.Type = 2
		.Charset = CodeBase
		BytesToBstr = .ReadText
		.Close
	End With
	Set ObjStream = Nothing
End Function

Private Sub Form_Load()
    Timer1.Interval = 1000
End Sub

Private Sub Timer1_Timer()
	Dim strHTML As String
	strHTML = GetBody("http://www.cdcgames.net/GetTime/Default.aspx")
	Debug.Print strHTML
End Sub

Option Explicit
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Private Function GetWebCodesDL(WebUrl As String) As String
On Error Resume Next
    If WebUrl = "" Then Exit Function
    Dim TempFile$
    TempFile = App.Path & "/DownTemp.html"
'下载文件
    URLDownloadToFile 0, WebUrl, TempFile, 0, 0
'读取内容
    If Dir(TempFile) <> "" Then
        Open TempFile For Input As #1
            Input #1, GetWebCodesDL
        Close #1
        Kill TempFile
    End If
End Function


Function GetWebCodes(WebUrl As String) As String
On Error Resume Next
    If WebUrl = "" Then Exit Function
    Dim xmlHTTP1
    Set xmlHTTP1 = CreateObject("Microsoft.XMLHTTP")
    xmlHTTP1.Open "get", WebUrl, True
    xmlHTTP1.SEnd
    While xmlHTTP1.ReadyState <> 4
        DoEvents
    Wend
    GetWebCodes = xmlHTTP1.responseText
    Set xmlHTTP1 = Nothing
End Function


Function GetHtmlCodes(ByRef WebBrowser As WebBrowser, ByRef WebUrl As String) As String
On Error Resume Next
    If WebUrl = "" Then Exit Function
    WebBrowser.Navigate WebUrl
    While WebBrowser.ReadyState <> 4
        DoEvents
    Wend
    GetHtmlCodes = WebBrowser.Document.documentElement.Outertext
End Function


'Function GetHtmlCodes(WebBrowser As WebBrowser, WebUrl As String) As String
'    If WebUrl = "" Then Exit Function
'    Dim web1
'    Set web1 = Form1.Controls.Add("SHELL.EXPLORER.2", "web1")
'    web1.Visible = True
'    web1.Move 0, 0, 15, 15
'    web1.Navigate WebUrl
'    While web1.ReadyState <> 4
'        DoEvents
'    Wend
'    GetHtmlCodes = web1.Document.documentElement.Outertext
'    Set web1 = Nothing
'End Function
''Me.Controls.Add("SHELL.EXPLORER.2", "web1", Me)



Function GetBodyCodes(Url)
On Error Resume Next
    Url = Url & "?rNum=" & Int((9999) * Rnd(Now()) + 1)
    Dim ObjXML
    Set ObjXML = CreateObject("Microsoft.XMLHTTP")
    With ObjXML
        .Open "Get", Url, False, "", ""
        .SEnd
        GetBodyCodes = .ResponseBody
    End With
    GetBodyCodes = BytesToBstr(GetBodyCodes, "UTF-8")
    Set ObjXML = Nothing
End Function

Function BytesToBstr(strBody, CodeBase)
    Dim ObjStream
    Set ObjStream = CreateObject("Adodb.Stream")
    With ObjStream
        .Type = 1
        .Mode = 3
        .Open
        .Write strBody
        .Position = 0
        .Type = 2
        .Charset = CodeBase
        BytesToBstr = .ReadText
        .Close
    End With
    Set ObjStream = Nothing
End Function

Function GetBodyCodes2(Url)
On Error Resume Next
    Url = Url & "&rNum=" & Int((9999) * Rnd(Now()) + 1) '''&&&&????
    Dim ObjXML
    Set ObjXML = CreateObject("Microsoft.XMLHTTP")
    With ObjXML
        .Open "Get", Url, False, "", ""
        .SEnd
        GetBodyCodes2 = .ResponseBody
    End With
    GetBodyCodes2 = BytesToBstr(GetBodyCodes2, "gb2312")
    Set ObjXML = Nothing
End Function

http://zhidao.baidu.com/question/40057444.html

http://zhidao.baidu.com/question/59283660.html

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
VBA(Visual Basic for Applications)是一种在Microsoft Office应用程序中使用的编程语言。要获取网页数据并实时更新,可以使用VBA的网络请求功能以及计时器功能。 首先,需要使用VBA中的HTTP请求对象来发送网络请求并获取网页数据。可以使用`CreateObject("MSXML2.XMLHTTP")`来创建HTTP请求对象。然后,使用HTTP请求对象发送GET或POST请求,获取所需网页数据。 ``` Dim http As Object Set http = CreateObject("MSXML2.XMLHTTP") http.Open "GET", "http://example.com", False '替换为目标网页URL http.send Dim response As String response = http.responseText ``` 接下来,可以将获取网页数据解析为所需的格式,例如XML或HTML。可以使用VBA中的内置函数或第三方库来解析网页数据。 最后,为了实现实时更新,可以使用VBA中的计时器功能。可以使用VBA的`Application.OnTime`方法来定时执行获取网页数据的代码。 ``` Sub UpdateWebData() '获取网页数据的代码 '设定下一次更新的时间 Application.OnTime Now + TimeValue("00:05:00"), "UpdateWebData" End Sub Sub StartUpdating() '启动更新任务 Application.OnTime Now + TimeValue("00:00:01"), "UpdateWebData" End Sub Sub StopUpdating() '停止更新任务 Application.OnTime Now + TimeValue("00:00:01"), "UpdateWebData", , False End Sub ``` 以上代码示例中,`UpdateWebData`子例程中的代码会在每次调用时获取网页数据,并将下一次更新的时间设定为5分钟后。`StartUpdating`子例程用于启动更新任务,调用后会立即执行一次更新,并设定下一次更新的时间。`StopUpdating`子例程用于停止更新任务,调用后不再执行下一次更新。 通过使用VBA的网络请求和计时器功能,可以实现获取网页数据的实时更新。可以根据需求调整更新的时间间隔和代码逻辑,以满足实际应用的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值