採集程式的主要步驟如下:
一、獲取被採集的頁面的內容
二、從獲取**中提取所有用的資料
一、獲取被採集的頁面的內容
我目前所掌握的asp常用獲取被採集的頁面的內容方法:
1、用serverxmlhttp元件獲取資料
以下內容為程式**:
function getbody(weburl)
'建立物件
'請求檔案,以非同步形式
'得到結果
'釋放物件
呼叫方法:
getbody(檔案的urlf位址)
2、或xmlhttp元件獲取資料
以下內容為程式**:
function getbody(weburl)
'建立物件
'釋放物件
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("","")
採集原理 採集技術篇
最近一段時間,採集很熱門,從新聞小偷,到 小偷,到新聞採集,flash採集,都有他的蹤影,現在還有很多的人對採集都很感興趣,為了服務大家,我也正在寫一套採集程式,名字為 心意採集程式 現在我講一下,採集用到的相關技術。下面講到的也不是很高深的xmlhttp技術,我也是稍稍講一下,乙個採集需要用到的幾...
轉 ASP採集 ASP採集程式原理
轉自 採集程式的主要步驟如下 一 獲取被採集的頁面的內容 二 從獲取 中提取所有用的資料 一 獲取被採集的頁面的內容 我目前所掌握的asp常用獲取被採集的頁面的內容方法 1 用serverxmlhttp元件獲取資料 以下內容為程式 以下為引用的內容 function getbody weburl 建...
PHP採集程式原理分析篇
由於需要,要寫乙個簡單的php採集程式,照例是到網上找了一堆教程,然後照貓畫虎,可是發現網上的教程全是似是而非,沒有乙個真正能用的。苦想了幾天,終於弄明白了裡面的道理。在這裡寫出來,請高手指正。採集程式的思路很簡單,無非就是先打乙個頁面,一般都是列表頁,取得裡面全部鏈結的位址,然後開啟逐條鏈結,尋找...