實例分析asp的擷取原理擷取開始
第一步是分析要採集的頁面。
使用瀏覽器開啟要擷取的頁面(如:http://sports.sina.com.cn/k/2008-09-15/04593948756.shtml,你可以其他頁面),開啟後,點選右鍵,檢視來源文件。
第二步,找到要採集的內容所在位置。
假如我要收集這個頁面上的標題和內容所在的位置:
標題在<h1 id=artibodyTitle style=color:#03005C;>和</h1>之間
內容在<!-- 正文內容begin -->和<!-- 正文內容end -->之間
注意所在位置的唯一性,可以在找到後,使用編輯中的查找,看看是不是唯一的,盡可能是唯一的,如果不是,盡可能是第一個,如果再不行,只能更換
第三步,寫程式碼
複製代碼代碼如下:
< %
'功能:asp採集程式碼
'作者:wangsdong
'備註:支援原始程序,請保留此訊息,謝謝
url=http://sports.sina.com.cn/k/2008-09-15/04593948756.shtml
str=getHTTPPage(url)
title=strcut(str,<h1 id=artibodyTitle style=color:#03005C;>,</h1>,2)
content=strcut(str,<!-- 正文內容begin -->,<!-- 正文內容end -->,2)
response.write 新聞標題<br><b>&title&</b><br><br><br>新聞內容:<br>&content
Function getHTTPPage(url)
On Error Resume Next
dim http
set http=Server.createobject(Microsoft.XMLHTTP)
Http.open GET,url,false
Http.send()
if Http.readystate<>4 then
exit function
end if
getHTTPPage=bytesToBSTR(Http.responseBody,GB2312)
set http=nothing
If Err.number<>0 then
Response.Write <p align='center'><font color='red'><b>伺服器取得檔案內容出錯</b></font></p>
Err.Clear
End If
End Function
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
'截取字串,1.包括起始和終止字符,2.不包括
Function strCut(strContent,StartStr,EndStr,CutType)
Dim strHtml,S1,S2
strHtml = strContent
On Error Resume Next
Select Case CutType
Case 1
S1 = InStr(strHtml,StartStr)
S2 = InStr(S1,strHtml,EndStr)+Len(EndStr)
Case 2
S1 = InStr(strHtml,StartStr)+Len(StartStr)
S2 = InStr(S1,strHtml,EndStr)
End Select
If Err Then
strCute = <p align='center'>沒有找到需要的內容。 </p>
Err.Clear
Exit Function
Else
strCut = Mid(strHtml,S1,S2-S1)
End If
End Function
% >
這樣就可以的,我現在將得到的內容輸出來,你可以將這些內容寫入資料庫,這樣資料就是你的了。