[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[技术讨论] 对vbs另存网页源码为txt出错的讨论

下面是段获取批处理之家主页源码并另存为txt的vbs代码,但不知道为什么成功获取的源码总是不能写入txt(但可以写入剪贴板)?请大家帮忙看下到底问题出在哪里?难道是文本格式的问题?
  1. Dim url, ie
  2. url = "http:\\www.bathome.net"
  3. set ie = CreateObject("InternetExplorer.Application")
  4. ie.navigate url
  5. while ie.busy :wscript.sleep 1000:wend
  6. vbstr = ie.document.body.innerHTML
  7. ie.Document.parentwindow.clipboarddata.setdata "text" , vbstr  '这是写入剪贴板
  8. ie.Quit
  9. Set ie = Nothing
  10. Set fso = CreateObject("scripting.filesystemobject")
  11. Set text = fso.opentextfile("temp.txt" , 1 , true)  
  12. text.Write vbstr  '写入txt出错
  13. text.Close
  14. Set text = nothing
  15. Set fso = Nothing
复制代码

[ 本帖最后由 batman 于 2011-3-13 01:24 编辑 ]
***共同提高***

回复 2楼 的帖子

试过了不行的。。。但用另外一个方法解决了,不过前面问题还是没有搞清楚。。。
  1. Set http = createObject("Microsoft.XMLHTTP")
  2. http.Open "get" , "http://www.bathome.net" , 0
  3. http.send()
  4. Set myGet = createObject("ADODB.Stream")
  5. myGet.Mode = 3
  6. myGet.Type = 1
  7. myGet.Open()
  8. myGet.Write(http.responseBody)
  9. myGet.SaveToFile "temp.txt" , 2
  10. myGet.Close
  11. Set myGet = Nothing
  12. Set http = Nothing
复制代码
***共同提高***

TOP

回复 4楼 的帖子

我承认是我搞错了模式(是在复制代码后改错的),我实际上是用("temp.txt" , 2 , ture)写了无数次不成功的(将vbstr变成普通字符是可以正常写入的)。所以,我估计是编码带来的问题吧。。。。
***共同提高***

TOP

楼上的厉害,学习了。。。。

同时,可以解释下原理不?
***共同提高***

TOP

回复 7楼 的帖子

哦,原来是这样,看来我估计得不错,呵呵,再次感谢。。。
***共同提高***

TOP

本人三楼的代码和六楼的代码同样实现了将bathome主页的源码存入txt,但三楼代码存入的格式为ansi格式,而六楼存入的格式为unicode格式,从最后保存结果来看,六楼代码存入的源码更完整更准确(当然我们可以把保存的ansi文本另存为unicode格式,但就会出现不可见字符“黑框”),运行下面的代码大家就明白了:
  1. Dim url, num
  2. url = "http://www.bathome.net"
  3. Set http = createObject("Microsoft.XMLHTTP")
  4. http.Open "get" , url , 0
  5. http.send()
  6. num = lenb(http.responseBody)
  7. Set http = Nothing
  8. Set IE = CreateObject("InternetExplorer.Application")
  9. IE.Visible = False
  10. IE.Navigate URL
  11. Do While IE.ReadyState <> 4
  12. Loop
  13. msgbox "ansi编码格式下获取源码总字节数:" & num & vbCrLf& "unicode编码格式下获取源码总字节数:" & Lenb(IE.document.body.innerHTML) & vbcrlf & "ansi比unicode格式少" & Lenb(IE.document.body.innerHTML)-num & "个字符!"
  14. IE.quit
  15. Set ie = Nothing
复制代码
***共同提高***

TOP

返回列表