ASP网页编程之ASP小偷(近程数据获得)法式的入门教程 ...
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还处在发展初期,大家对它的理解不同,如产品和服务标准,收费标准等,不利于行业的健康发展。 掌握asp的特性而且一定要知道为什么。 Session:这个存储跟客户端会话过程的数据,默认20分钟失效 不能只是将它停留在纸上谈兵的程度上。 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。 如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。 Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write 跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组 你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。 如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。 你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。 Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名") 我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标. Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名") 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点: 我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。
页:
[1]