一直以来,我都在网上寻找问题的答案,因为我看有些站长工具能够抓取,所以问题一定有解决的方法,我开始怀疑是路径不对,不过我发觉也只有这个路径,于是我把目标指向了抓取网页的程序,采用其他方法,没想到,让我惊奇的结果出来了。用Microsoft.XMLHTTP对象获取就可以抓取到正常结果,我以前是用MSXML2.SERVERXMLHTTP.3.0对象来抓取的。代码如下。
Function getHTTPPage(url,charcode)
dim objXML
'set objXML=createobject("MSXML2.SERVERXMLHTTP.3.0") '调用XMLHTTP组件,测试空间是否支持XMLHTTP
set objXML=createobject("Microsoft.XMLHTTP")
objXML.open "GET",url,false 'false表示以同步的方式获取网页代码,了解什么是同步?什么是异步?
objXML.send() '发送
getHTTPPage=bBytesToBstr(objXML.responseBody,charcode)'返回信息,同时用函数定义编码
set objXML=nothing'关闭
End Function
Function bBytesToBstr(body,charcode)
dim objstream
set objstream = CreateObject("adodb.stream") '//调用adodb.stream组件
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = charcode '转换原来默认的UTF-8编码转换成GB2312编码,否则直接用XMLHTTP调用有中文字符的网页得到的将是乱码
bBytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
end Function
通过使用这个抓取函数,谷歌的收录数据、排名数据都可以正常获取了,从而解决了这个BUG。
东字站长工具正在一步步完善,而且源代码全部开源,只希望保留版权信息。