這里所說(shuō)的“小偷”指的是在asp中運(yùn)用xml中的xmlhttp組件提供的強(qiáng)大功能,把遠(yuǎn)程網(wǎng)站上的數(shù)據(jù)(圖片,網(wǎng)頁(yè)及其他文件)抓取到本地,經(jīng)過(guò)各種處理后顯示到頁(yè)面上或者存儲(chǔ)進(jìn)數(shù)據(jù)庫(kù)的一類程序。你可以通過(guò)這種小偷程序,完成過(guò)去一些似乎完全不可能實(shí)現(xiàn)的任務(wù),比如說(shuō)把某個(gè)站的頁(yè)面偷梁換柱后變成自己的頁(yè)面,或者把某個(gè)站的一些數(shù)據(jù)(文章,圖片)保存到本地?cái)?shù)據(jù)庫(kù)中加以利用?!靶⊥怠钡膬?yōu)點(diǎn)有:無(wú)須維護(hù)網(wǎng)站,因?yàn)樾⊥党绦蛑械臄?shù)據(jù)來(lái)自其他網(wǎng)站,它將隨著該網(wǎng)站的更新而更新;可以節(jié)省大量的服務(wù)器資源,一般小偷程序就幾個(gè)文件,所有網(wǎng)頁(yè)內(nèi)容都是來(lái)自其他網(wǎng)站。缺點(diǎn)在于:不穩(wěn)定,如果目標(biāo)網(wǎng)站出錯(cuò),程序也會(huì)出錯(cuò),而且,如果目標(biāo)網(wǎng)站進(jìn)行升級(jí)維護(hù),那么小偷程序也要進(jìn)行相應(yīng)修改;速度,因?yàn)槭沁h(yuǎn)程調(diào)用,速度和在本地服務(wù)器上讀取數(shù)據(jù)比起來(lái),肯定要慢一些。怎么樣,聽(tīng)起來(lái)很神奇吧?我們現(xiàn)在就開(kāi)始來(lái)學(xué)習(xí)一些“小偷”程序的入門(mén)知識(shí)吧!
我們拿個(gè)簡(jiǎn)單點(diǎn)的東西來(lái)研究一下吧,qq網(wǎng)站上的天氣預(yù)報(bào)程序
代碼如下:
1 %
2 On Error Resume Next
3 Server.Scripttimeout=9999999
4 Function Gethttppage(Path)
5 T = Getbody(Path)
6 Gethttppage=Bytestobstr(T,"Gb2312")
7 End Function
8
9 ' 首先,進(jìn)行小偷程序的一些初始化設(shè)置,以上代碼的作用分別是忽略掉所有非致命性錯(cuò)誤,把小偷程序的運(yùn)行超時(shí)時(shí)間設(shè)置得很長(zhǎng)(這樣不會(huì)出現(xiàn)運(yùn)行超時(shí)的錯(cuò)誤),轉(zhuǎn)換原來(lái)默認(rèn)的utf-8編碼轉(zhuǎn)換成gb2312編碼,否則直接用xmlhttp組件調(diào)用有中文字符的網(wǎng)頁(yè)得到的將是亂碼。
10
11 Function Getbody(Url)
12 On Error Resume Next
13 Set Retrieval = Createobject("Microsoft.Xmlhttp")
14 With Retrieval
15 .Open "Get", Url, False, "", ""
16 .Send
17 Getbody = .Responsebody
18 End With
19 Set Retrieval = Nothing
20 End Function
21
22 '然后調(diào)用xmlhttp組件創(chuàng)建一個(gè)對(duì)象并進(jìn)行初始化設(shè)置。
23
24 Function Bytestobstr(Body,Cset)
25 Dim Objstream
26 Set Objstream = Server.Createobject("Adodb.Stream")
27 Objstream.Type = 1
28 Objstream.Mode =3
29 Objstream.Open
30 Objstream.Write Body
31 Objstream.Position = 0
32 Objstream.Type = 2
33 Objstream.Charset = Cset
34 Bytestobstr = Objstream.Readtext
35 Objstream.Close
36 Set Objstream = Nothing
37 End Function
38
39 Function Newstring(Wstr,Strng)
40 Newstring=Instr(Lcase(Wstr),Lcase(Strng))
41 If Newstring=0 Then Newstring=Len(Wstr)
42 End Function
43
44 '處理抓取回來(lái)的數(shù)據(jù)需要調(diào)用adodb.Stream組件并進(jìn)行初始化設(shè)置。%>
您可能感興趣的文章:- ASP小偷(遠(yuǎn)程數(shù)據(jù)獲取)程序的入門(mén)教程
- 從零開(kāi)始學(xué)ASP.NET-基礎(chǔ)篇
- ASP.NET與MySQL數(shù)據(jù)庫(kù)簡(jiǎn)明圖示入門(mén)教程
- FLASH與ASP通信入門(mén)教程——做真正屬于自己的留言本
- [ASP.NET Ajax] ECMAScript基礎(chǔ)類以及Asp.net Ajax對(duì)類lt;Objectgt;的擴(kuò)展
- ASP.net基礎(chǔ)知識(shí)之常見(jiàn)錯(cuò)誤分析
- asp經(jīng)典入門(mén)教程 在ASP中使用SQL 語(yǔ)句
- ASP.NET MVC小結(jié)之基礎(chǔ)篇(一)
- ASP.NET MVC小結(jié)之基礎(chǔ)篇(二)
- ASP基礎(chǔ)入門(mén)第一篇(ASP技術(shù)簡(jiǎn)介)