end if
getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312"
set http=nothing
if err.number<>0 then err.Clear
end function
''2、转换乱玛,直接用xmlhttp调用有中文字符的网页得到的将是乱玛,可以通过adodb.stream组件进行转换
Function BytesToBstr(body,Cset)
dim objstream
set objstream = Server.CreateObject("adodb.stream"
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
''下面试着调用http://wmjie.51.net/swords的html内容
Dim Url,Html
Url="http://wmjie.51.net/swords/"
Html = getHTTPPage(Url)
Response.write Html
%>
------------------------------------------------------
代码:
''代码]用XMLHTTP读取远程文件
<%
Response.Buffer = True
Dim objXMLHTTP, xml
Set xml = Server.CreateObject("Microsoft.XMLHTTP"
xml.Open "GET", "http://wmjie.51.net/swords/diary.rar", False
xml.Send
'' Add a header to give it a file name:
Response.AddHeader "Content-Disposition", _
"attachment;filename=mitchell-pres.zip"
'' Specify the content type to tell the browser what to do:
Response.ContentType = "application/zip"
'' Binarywrite the bytes to the browser
Response.BinaryWrite xml.responseBody
Set xml = Nothing
%>
-------------------------------------
如何写ASP入库小偷
程序 入库小偷的原理也很简单:就是用XMLHTTP远程读取网页的内容,然后根据需要,对读到的内容进行加工(过滤,替换,分类),最后得到自己需要的数据,加入到数据库中。
首先:我们先用XMLHTTP读取远程网页(我的另一片文章中有介绍)。
其次:对内容进行过滤,这个是比较关键的步骤,比如说,我要从远程网页上提取出所有url连接,我应该怎么做呢?
代码:
‘这里用的是正则式
Set objRegExp = New Regexp ''建立对象
objRegExp.IgnoreCase = True ''大小写忽略
objRegExp.Global = True ''全局为真
objRegExp.Pattern = "http://.+?" ''匹配字段
set mm=objRegExp.Execute(str) ''执行查找,str为输入参数
For Each Match in mm ''进入循环
Response.write(Match.Value) ''输出url地址
next
然后,我们需要根据需要做一些替换功能,把不必要的数据替换掉,这个比较简单,用Replace函数即可。
最后,进行数据库操作
-------------------------------
一个例子
代码:
<%
On Error Resume Next
Server.ScriptTimeOut=9999999
Function getHTTPPage(Path)
t = GetBody(Path)
getHTTPPage=BytesToBstr(t,"GB2312"
End function
''首先,进行小偷程序的一些初始化设置,以上代码的作用分别是忽略掉所有非致命性错误,把小偷
程序的运行超时时间设置得很长(这样不会出现运行超时的错误),转换原来默认的UTF-8编码转换成GB2312编码,否则直接用XMLHTTP组件调用有中文字符的网页得到的将是乱码。
Function GetBody(url)
on error resume next
Set Retrieval = CreateObject("Microsoft.XMLHTTP"
With Retrieval
.Open "Get", url, False, "", ""
.Send
GetBody = .ResponseBody
End With
Set Retrieval = Nothing
End Function
''然后调用XMLHTTP组件创建一个对