asp採集HTML內容常用代碼,詳講正則採集

來源:互聯網
上載者:User

先說一下採集原理:

採集程式的主要步驟如下:

一、擷取被採集的頁面的內容
二、從擷取代碼中提取所有用的資料

一、擷取被採集的頁面的內容

我目前所掌握的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&“"'Regex
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串連地址
絕大部分分頁頁面裡的內容頁串連也有關聯規則,如:
<a href="url1">串連1</a> <br>
<a href="url2">串連2</a> <br>
<a href="url3">串連3</a> <br>

用以下代碼就可以獲得一個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標記,我們可以根據這些有規則的標記提取需要的各個部分的內容。
如:
每個頁面都有網頁標題<title>網頁標題</title>,用我上面寫的MID截取函數就可以獲得<title></title>之間的值,也可以用Regex來獲得。
例:body("<title>網頁標題</title>","<title>","</title>")

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.