透明 发表于 2015-2-3 23:42:03

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还处在发展初期,大家对它的理解不同,如产品和服务标准,收费标准等,不利于行业的健康发展。

因胸联盟 发表于 2015-2-4 06:06:00

掌握asp的特性而且一定要知道为什么。

活着的死人 发表于 2015-2-9 17:00:36

Session:这个存储跟客户端会话过程的数据,默认20分钟失效

谁可相欹 发表于 2015-2-9 22:22:34

不能只是将它停留在纸上谈兵的程度上。

简单生活 发表于 2015-2-10 00:34:29

代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。

深爱那片海 发表于 2015-2-11 02:51:36

如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。

变相怪杰 发表于 2015-3-1 19:50:41

Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write

莫相离 发表于 2015-3-6 13:21:22

Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write

若天明 发表于 2015-3-13 01:08:34

跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组

蒙在股里 发表于 2015-3-16 19:44:51

你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

小女巫 发表于 2015-3-22 23:56:09

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

老尸 发表于 2015-3-31 11:56:19

我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。

愤怒的大鸟 发表于 2015-4-12 19:38:12

如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。

冷月葬花魂 发表于 2015-6-10 05:54:01

你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

再现理想 发表于 2015-6-14 09:51:22

完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。

金色的骷髅 发表于 2015-6-16 20:15:05

Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")

海妖 发表于 2015-7-5 00:04:20

我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.

飘灵儿 发表于 2015-7-5 00:22:45

Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")

再见西城 发表于 2015-7-7 16:32:58

学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:

山那边是海 发表于 2015-7-16 04:59:21

我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。
页: [1]
查看完整版本: ASP网页编程之ASP小偷(近程数据获得)法式的入门教程 ...