|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
asp对于服务器的要求较高,一般的服务器如果访问量一大就垮了,不得不重启。法式|教程|入门教程|数据|入门教程 这里所说的“小偷”指的是在ASP中应用XML中的XMLHTTP组件供应的壮大功效,把近程网站上的数据(图片,网页及其他文件)抓取到当地,经由各类处置后显示到页面上或存储进数据库的一类法式。你可以经由过程这类小偷法式,完成曩昔一些仿佛完整不成能完成的义务,好比说把某个站的页面移花接木后酿成本人的页面,或把某个站的一些数据(文章,图片)保留到当地数据库中加以使用。“小偷”的长处有:不必保护网站,由于小偷法式中的数据来自其他网站,它将跟着该网站的更新而更新;可以节俭大批的办事器资本,普通小偷法式就几个文件,一切网页内容都是来自其他网站。弱点在于:不不乱,假如方针网站失足,法式也会失足,并且,假如方针网站停止晋级保护,那末小偷法式也要停止响应修正;速度,由于是近程挪用,速度和在当地办事器上读取数据比起来,一定要慢一些。怎样,听起来很奇异吧?咱们如今就入手下手来进修一些“小偷”法式的入门常识吧!
咱们拿个复杂点的器材来研讨一下吧,QQ网站上的天色预告法式
代码以下:
<%
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组件创立一个对象并停止初始化设置。
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
Function Newstring(wstr,strng)
Newstring=Instr(lcase(wstr),lcase(strng))
if Newstring<=0 then Newstring=Len(wstr)
End Function
’处置抓取回来的数据需求挪用adodb.stream组件并停止初始化设置。%>
’以下即为页面显示局部
<%
Dim wstr,str,url,start,over,city
’界说一些需求利用到的变量
city = Request.QueryString("id")
’法式传回的ID变量(即用户选择的城市)赋给id
url="http://appnews.qq.com/cgi-bin/news_qq_search?city="&city&""
’这里设置需求抓取的页面地址,固然你也能够直接指定某个地址而不利用变量
wstr=getHTTPPage(url)
’获得指定页面的全体数据
start=Newstring(wstr," <html>")
’这里设置需求处置的数据的头部,这个变量应视分歧情形而设置,详细内容可以经由过程检查需求抓取的页面的源代码来肯定。由于在这个法式里咱们需求抓取全部页面,所以设置为页面全体抓取。注重,设置的内容必需是页面内容独一的,不成以反复。
over=Newstring(wstr," </HTML>")
’和start绝对应的就是需求处置的数据的尾部,一样的,设置的内容必需是页面中独一的。
body=mid(wstr,start,over-start)
’设置显示页面的局限
’上面就是动用乾坤挪移+++的时分了,经由过程replace可以用一些字符交换失落数据中指定的字符。
body = replace(body,"skin1","天色预告 - 斯克收集")
body = replace(body,"http://appnews.qq.com/cgi-bin/news_qq_search?city","tianqi.asp?id")
’本法式中已完成了交换的任务,假如有其他需求的话可以持续停止相似的交换操作。
response.write body
%>
交换完需求修正的内容后,就能够把修正的内容显示在页面上了。至此法式停止
法式利用办法及了局:把上述代码去失落申明局部后保留为tianqi.asp,上传到撑持ASP和XML的空间下,在阅读器中运转便可。你可以在在这个法式的基本长进行进一步的界面丑化或法式优化。
以上只是一些关于XMLHTTP组件的低级使用,实践上它还能完成的功效还有良多,好比说保留近程图片到当地办事器上,共同adodb.stream组件可以把获得来的数据保留进数据库。小偷的感化和利用局限都很广。然而不成以拿来做守法的事哦!
或许还有人要问了,这类“小偷”法式岂非只是ASP的专利吗?非也,PHP经由过程fopen函数一样可以完成一样的后果,因为PHP自己的各类特色,写出来的小偷法式和ASP比拟,在体积和履行效力上都有者分明的优势,但限于篇幅,这里就纷歧一申明了。
</p> 缺乏可以共同遵循的行业标准,ASP还处在发展初期,大家对它的理解不同,如产品和服务标准,收费标准等,不利于行业的健康发展。 |
|