推薦:ASP與ACCESS鏈接本文例舉了ASP實例關於ASP與ACCESS鏈接的兩種方式。 以下為引用的內容: %dim dd,connstrdd=data.mdbconnstr=&q
採集程序的主要步驟如下:
一、獲取被採集的頁面的內容
二、從獲取代碼中提取所有用的數據
一、獲取被採集的頁面的內容
我目前所掌握的ASP常用獲取被採集的頁面的內容方法:
1、用serverXMLHTTP組件獲取數據
以下內容為程序代碼:
| 以下為引用的內容: Function GetBody(weburl) '創建對象 Dim ObjXMLHTTP Set ObjXMLHTTP=Server.CreateObject(MSXML2.serverXMLHTTP) '請求文件,以異步形式 ObjXMLHTTP.Open GET,weburl,False ObjXMLHTTP.send While ObjXMLHTTP.readyState <> 4 ObjXMLHTTP.waitForResponse 1000 Wend '得到結果 GetBody=ObjXMLHTTP.responseBody '釋放對象 Set ObjXMLHTTP=Nothing End Function |
調用方法:
GetBody(文件的URLf地址)
2、或XMLHTTP組件獲取數據
以下內容為程序代碼:
| 以下為引用的內容: Function GetBody(weburl) '創建對象 Set Retrieval = CreateObject(Microsoft.XMLHTTP) With Retrieval .Open Get, weburl, False, , .Send GetBody = .ResponseBody End With '釋放對象 Set Retrieval = Nothing End Function |
調用方法:
GetBody(文件的URLf地址)
這樣獲取的數據內容還需要進行編碼轉換才可以使用
以下內容為程序代碼:
| 以下為引用的內容: 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 |
調用方法:BytesToBstr(要轉換的數據,編碼)'編碼常用為GB2312和UTF-8
二、從獲取代碼中提取所有用的數據
目前我掌握的方法有:
1、用ASP內置的MID函數截取需要的數據
以下內容為程序代碼:
Function body(wstr,start,over)
start=Newstring(wstr,start)
'設置需要處理的數據的唯一的開始標記
over=Newstring(wstr,over)
'和start相對應的就是需要處理的數據的唯一的結束標記
body=mid(wstr,start,over-start)
'設置顯示頁面的範圍
End Function
調用方法:body(被採集的頁面的內容,開始標記,結束標記)
2、用正則獲取需要的數據
以下內容為程序代碼:
Function body(wstr,start,over)
Set xiaoqi = New Regexp'設置配置對象
xiaoqi.IgnoreCase = True'忽略大小寫
xiaoqi.Global = True'設置為全文搜索
xiaoqi.Pattern = &start&. ?&over&'正則表達式
Set Matches =xiaoqi.Execute(wstr)'開始執行配置
set xiaoqi=nothing
body=
For Each Match in Matches
body=body&Match.Value '循環匹配
Next
End Function
調用方法:body(被採集的頁面的內容,開始標記,結束標記)
採集程序祥細思路:
1、取得網站的分頁列表頁的每頁地址
目前絕大部分動態網站的分頁地址都有規則,如:
動態頁
第一頁:index.asp?page=1
第二頁:index.asp?page=2
第三頁:index.asp?page=3
.....
靜態頁
第一頁:page_1.htm
第二頁:page_2.htm
第三頁:page_3.htm
.....
取得網站的分頁列表頁的每頁地址,只需要用變量替代每頁地址的變化的字符即可如:page_<%=&page&%>.htm
2、獲取被採集網站的分頁列表頁內容
3、從分頁列表代碼中提取被採集的內容頁面的URL連接地址
絕大部分分頁頁面裡的內容頁連接也有固定規則,如:
連接1
連接2
連接3
用以下代碼就可以獲得一個URL連接集合
以下內容為程序代碼:
| 以下為引用的內容: Set xiaoqi = New Regexp xiaoqi.IgnoreCase = True xiaoqi.Global = True xiaoqi.Pattern = . ? Set Matches =xiaoqi.Execute(頁面列表內容) set xiaoqi=nothing url= For Each Match in Matches url=url&Match.Value Next |
4、取得被採集的內容頁面內容,根據提取標記從被採集的內容頁面分別截取要取得的數據
因為是動態生成的頁面,大多數內容頁面內都有相同的html標記,我們可以根據這些有規則的標記提取需要的各個部分的內容。
如:
每個頁面都有網頁標題,用我上面寫的MID截取函數就可以獲得之間的值,也可以用正則表達式來獲得。
例:body(,)
分享:如何使用ASP訂製自己的XML文件讀寫方法在此之前,我寫了兩篇關於ASP結合XML的貼子,分別介紹了用XML取代數據庫和用XML整合數據庫這兩方面的技術,讓數據庫在某種情況下不再是我們的唯一選擇。而XML跟傳統數據庫相比,更有以下優