淺談ASP采集程序的原理_ASP教程
推薦:ASP與ACCESS鏈接本文例舉了ASP實(shí)例關(guān)于ASP與ACCESS鏈接的兩種方式。 以下為引用的內(nèi)容: % dim dd,connstr dd=data.mdb connstr=&q
采集程序的主要步驟如下:
一、獲取被采集的頁面的內(nèi)容
二、從獲取代碼中提取所有用的數(shù)據(jù)
一、獲取被采集的頁面的內(nèi)容
我目前所掌握的ASP常用獲取被采集的頁面的內(nèi)容方法:
1、用serverXMLHTTP組件獲取數(shù)據(jù)
以下內(nèi)容為程序代碼:
| 以下為引用的內(nèi)容: Function GetBody(weburl) '創(chuàng)建對(duì)象 Dim ObjXMLHTTP Set ObjXMLHTTP=Server.CreateObject("MSXML2.serverXMLHTTP") '請(qǐng)求文件,以異步形式 ObjXMLHTTP.Open "GET",weburl,False ObjXMLHTTP.send While ObjXMLHTTP.readyState <> 4 ObjXMLHTTP.waitForResponse 1000 Wend '得到結(jié)果 GetBody=ObjXMLHTTP.responseBody '釋放對(duì)象 Set ObjXMLHTTP=Nothing End Function |
調(diào)用方法:
GetBody(文件的URLf地址)
2、或XMLHTTP組件獲取數(shù)據(jù)
以下內(nèi)容為程序代碼:
| 以下為引用的內(nèi)容: Function GetBody(weburl) |
調(diào)用方法:
GetBody(文件的URLf地址)
這樣獲取的數(shù)據(jù)內(nèi)容還需要進(jìn)行編碼轉(zhuǎn)換才可以使用
以下內(nèi)容為程序代碼:
| 以下為引用的內(nèi)容: 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 |
調(diào)用方法:BytesToBstr(要轉(zhuǎn)換的數(shù)據(jù),編碼)'編碼常用為GB2312和UTF-8
二、從獲取代碼中提取所有用的數(shù)據(jù)
目前我掌握的方法有:
1、用ASP內(nèi)置的MID函數(shù)截取需要的數(shù)據(jù)
以下內(nèi)容為程序代碼:
Function body(wstr,start,over)
start=Newstring(wstr,start)
'設(shè)置需要處理的數(shù)據(jù)的唯一的開始標(biāo)記
over=Newstring(wstr,over)
'和start相對(duì)應(yīng)的就是需要處理的數(shù)據(jù)的唯一的結(jié)束標(biāo)記
body=mid(wstr,start,over-start)
'設(shè)置顯示頁面的范圍
End Function
調(diào)用方法:body(被采集的頁面的內(nèi)容,開始標(biāo)記,結(jié)束標(biāo)記)
2、用正則獲取需要的數(shù)據(jù)
以下內(nèi)容為程序代碼:
Function body(wstr,start,over)
Set xiaoqi = New Regexp'設(shè)置配置對(duì)象
xiaoqi.IgnoreCase = True'忽略大小寫
xiaoqi.Global = True'設(shè)置為全文搜索
xiaoqi.Pattern = "”&start&“. ?”&over&“"'正則表達(dá)式
Set Matches =xiaoqi.Execute(wstr)'開始執(zhí)行配置
set xiaoqi=nothing
body=""
For Each Match in Matches
body=body&Match.Value '循環(huán)匹配
Next
End Function
調(diào)用方法:body(被采集的頁面的內(nèi)容,開始標(biāo)記,結(jié)束標(biāo)記)
采集程序祥細(xì)思路:
1、取得網(wǎng)站的分頁列表頁的每頁地址
目前絕大部分動(dòng)態(tài)網(wǎng)站的分頁地址都有規(guī)則,如:
動(dòng)態(tài)頁
第一頁:index.asp?page=1
第二頁:index.asp?page=2
第三頁:index.asp?page=3
.....
靜態(tài)頁
第一頁:page_1.htm
第二頁:page_2.htm
第三頁:page_3.htm
.....
取得網(wǎng)站的分頁列表頁的每頁地址,只需要用變量替代每頁地址的變化的字符即可如:page_<%="&page&"%>.htm
2、獲取被采集網(wǎng)站的分頁列表頁內(nèi)容
3、從分頁列表代碼中提取被采集的內(nèi)容頁面的URL連接地址
絕大部分分頁頁面里的內(nèi)容頁連接也有固定規(guī)則,如:
連接1
連接2
連接3
用以下代碼就可以獲得一個(gè)URL連接集合
以下內(nèi)容為程序代碼:
| 以下為引用的內(nèi)容: Set xiaoqi = New Regexp xiaoqi.IgnoreCase = True xiaoqi.Global = True xiaoqi.Pattern = ””“. ?”““ Set Matches =xiaoqi.Execute(頁面列表內(nèi)容) set xiaoqi=nothing url="" For Each Match in Matches url=url&Match.Value Next |
4、取得被采集的內(nèi)容頁面內(nèi)容,根據(jù)”提取標(biāo)記“從被采集的內(nèi)容頁面分別截取要取得的數(shù)據(jù)
因?yàn)槭莿?dòng)態(tài)生成的頁面,大多數(shù)內(nèi)容頁面內(nèi)都有相同的html標(biāo)記,我們可以根據(jù)這些有規(guī)則的標(biāo)記提取需要的各個(gè)部分的內(nèi)容。
如:
每個(gè)頁面都有網(wǎng)頁標(biāo)題,用我上面寫的MID截取函數(shù)就可以獲得之間的值,也可以用正則表達(dá)式來獲得。
例:body("","")
分享:如何使用ASP訂制自己的XML文件讀寫方法在此之前,我寫了兩篇關(guān)于ASP結(jié)合XML的貼子,分別介紹了用XML取代數(shù)據(jù)庫和用XML整合數(shù)據(jù)庫這兩方面的技術(shù),讓數(shù)據(jù)庫在某種情況下不再是我們的唯一選擇。而XML跟傳統(tǒng)數(shù)據(jù)庫相比,更有以下優(yōu)
- asp FSO 讀寫文件本文件實(shí)現(xiàn)代碼
- asp中isNull、isEmpty和空字符串的區(qū)別
- asp獲取用戶真實(shí)IP地址的方法
- asp連接sqlserver數(shù)據(jù)庫實(shí)現(xiàn)代碼
- asp中正則表達(dá)式過濾html代碼函數(shù)
- asp中g(shù)et post提交表單區(qū)別
- 網(wǎng)頁模板:ASP內(nèi)建對(duì)象Request
- xmlhttp的open方法使用詳解
- ASP的常用的自定義函數(shù)大全
- asp中用for循環(huán)的一個(gè)小技巧
- eWebEditor v3.8 列目錄
- ASP無組件分頁實(shí)現(xiàn)思路及代碼
- 相關(guān)鏈接:
- 教程說明:
ASP教程-淺談ASP采集程序的原理
。