VB中Inet控件获取源码不完整,如何处理。

页面三个控件:Text1,Text2,Inet1
Private Sub Command1_Click()
Text2.Text = Inet1.OpenURL(Text1.Text)
End Sub
Text2已设为多行文本和上下拉条。

问题:
显示的HTML不全,特别不是GBK的页面只能得到一小半。
比如:http://baidu.hexun.com/stock/h.php?code=600488.sh&t=d
这个页只能显示到“百度一下”的按钮的代码,后面就没有了。

请问,这该怎么办?
ljl88900和秋色烽火的方法还是不行,不能完整获取。

直接给个函数你 控件也不用了

'============================
'XmlHttp函数
'msgbox getBody("http://www.baidu.com",["GB2312"|"BIG5"|...])
'============================
Public Function GetBody(ByVal URL$, Optional ByVal Coding$ = "GB2312")
Dim ObjXML
On Error Resume Next
Set ObjXML = CreateObject("Microsoft.XMLHTTP")
With ObjXML
.Open "Get", URL, False, "", ""
.setRequestHeader "If-Modified-Since", "0"
.SEnd
GetBody = .ResponseBody
End With
GetBody = BytesToBstr(GetBody, Coding)
Set ObjXML = Nothing
End Function

Public 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

不清楚你写的什么代码,msgbox 是有字数限制的,我用 Debug.Print全显示出来了

Debug.Print GetBody("http://baidu.hexun.com/stock/h.php?code=600488.sh&t=d ")
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-17
出错的原因是你对Inet1控件的使用不正确。
下面是修改后的代码,能完整下载网页代码:

Private Sub Command1_Click()
Dim b() As Byte
Inet1.Cancel
Inet1.Protocol = icHTTP
Inet1.URL = ""
Inet1.URL = Text1.Text
b() = Inet1.OpenURL(, icByteArray)
Text2.Text = StrConv(b, vbUnicode)
End Sub
第2个回答  2009-03-17
这个东东是控件的bug 推荐用webbrowser来回去源码 或者是用winsock

VB6.0: Inet.OpenURL 获取的HTML不完整
请检查你的电脑是否112k大小的那个版本!排除了上面问题,其次,inet控件是不能获取一些网页由js生成的代码,比如QQ网页登录窗口这部分代码,是获取不到的。再次,inet去获取一些网页代码,直接报错说网址非法,比如淘宝装修市场的网址。这时我们可以使用 xmlHttp 来获取,或者使用 winHttp 来获取,这两者使...

VB6.0,(1)网页源代码读取不完整,(2)源代码中的一段数据如何赋给一变量...
用inet控件就是有时候会取不全,这个没啥办法,唯一的办法就是换别的 比如用WebBrowser,XmlHttp,Socket都可以 第二个问题,复杂但是实用的方法是用正则表达式 简单的方式是用Instr和mid配合

vb Inet1.OpenURL 获取代码不全
Inet1.URL = "" '这步不要省略 Inet1.URL = ""http:\/\/cj.gw.com.cn\/news\/stock\/sz002153\/gbgd.shtml b() = Inet1.OpenURL(, icByteArray)Dim myHTML As String myHTML = StrConv(b, vbUnicode) '即为所获得网页源代码 建议使用Webbrowser或Winsock控件获取,Inet不怎么好用。

VB中用inet控件访问FTP服务器,当取文件列表时,如果是空文件夹,就会卡住...
VB中用inet控件访问FTP服务器,当取文件列表时,如果是空文件夹,就会卡住 展开  我来答 分享 微信扫一扫 网络繁忙请稍后重试 新浪微博 QQ空间 举报 浏览10 次 可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。 ftp服务器 如果 文件夹 vb inet 搜索资料 本地图片 图片...

VB 如何去掉 WINSOCK 获得的 数据 中的 HTTP 头文件 ? 正则表达式?_百 ...
inet"不简单(已经帮你处理掉)。xml同理。正则表达式有点大材小用了。没必要.直接使用字符串处理方式就可以了。每个头文件到数据之间都有一个空行。只要从刚开始到空行。配合mid instr来处理就搞定了。搓搓有余了。不管是简单html页面。或者是二进制数据。都可以。我的下载程序就是这么做的。没必要用...

vb6编程:谁能给我一个用InternetOpen、InternetOpenUrl下载网页简单例子...
Option Explicit 'vb代替inet控件获得网页源代码(解决代码不完整的问题)Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0 Public Const INTERNET_OPEN_TYPE_DIRECT = 1 Public Const INTERNET_OPEN_TYPE_PROXY = 3 Public Const scUserAgent = "Microsoft Internet Explorer 6.0"Public Const INTERNET_...

关于VB inet控件使用出错的问题
1.FTP的地址,也即是域名,或者IP地址.2.端口.一般来说FTP使用21号端口,也有例外.检查你这两个参数对没有.你最好ping一个你的FTP地址.=== 我晕啊,你自己好好检查你的用户名和密码吧.还要注意用户名的大小写.哎,你可不可以把你的整个VB工程,打个包发给我看看啊.我帮你改改.xie_jian_jun@16...

请教2个inet控件编程的问题。
1、也许是你的链接没有关闭,导致VB需要等待,你要关闭你所有的用过的链接 2、 下面就是上传到带空格的目录中的方法,用引号就可以 Inet1.Execute , "PUT C:\\1.txt ""d:\/aaa bbb\/1.txt"""

vb inet控件,如果运行中断线或网页打不开如何处理?
网页打不开时,页面里会传回一些有错误特征的提示代码,检查inet的返回数据里是否有这些特征即可。用Instr()即可对返回字符检查 比如返回错误页面里一定会有 "错误","Error"If Instr(1,netstr,"错误")>0 Or Instr(1,netstr,"error")>0 Then Msgbox "发生错误!"然后进行错误处理即可。

VB:如何通过VB获取某个网站的所有页面源代码?
1、先用WebBrowser控件、iNet控件或xmlhttp组件获取网站首页代码(这个网上有一大堆介绍,就不啰嗦了),然后分析代码,找出其中的超链接,然后再逐个获取其页面代码,这里要注意的是,要区分外链和内链,外链就不要去获取代码了(否则的话如果网站上有个百度的链接,那么你的程序就要去获取百度的页面了)...

相似回答