程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> 也談采集入庫的技術

也談采集入庫的技術

編輯:關於ASP編程
 

落伍的貼也看了很多了,發現了很多講小偷技術的,如精華貼裡的--小偷程序原理和簡單示例:
[url]http://www.im286.com/viewthread.php?tid=407182&extra=page%3D1[/url] 等等,也有提供采集程序下載的,但我還沒看到一篇完整的入庫的文章,或許是我看的貼少吧。雖然不是很深奧,我還是講講吧,希望高手別見笑啦,以前發了個原創的影視系

統,卻沒落伍,這次再求落伍啦,希望大家幫頂下,也希望我能落伍!!
入庫也和小偷一樣,要先得到需入庫的部分,我這裡以[url]http://www.skycn.com/article/77.html[/url] 為例了
<%
dim url,mydate
url="http://www.skycn.com/article/77.html" '定義url地址
Set OXML = server.CreateObject("Microsoft.XMLHTTP") 
'下面定義兩個函數,得到數據
Private Function BytesToBstr(body)  '利用流進行中文編碼
Set ADOS = Server.CreateObject("ADODB.Stream")
        Dim Bdat
        Bdat=Body
        ADOS.Type = 1
        ADOS.Mode =3
        ADOS.Open
        ADOS.Write Bdat
        ADOS.Position = 0
        ADOS.Type = 2
        ADOS.Charset = "GB2312"
        BytesToBstr = ADOS.ReadText 
        ADOS.Close
End Function
Public Function GetData(byref url) '利用OXML得到數據
        'on error resume next 
        SourceCode = OXML.open ("GET",url,false)
        OXML.send() 
        if OXML.readystate<>4 then exit function
        GetData = BytesToBstr(OXML.responseBody)'
        if err.number<>0 then err.Clear
End Function
mydate=getdata(url)
mydate=Replace(mydate,chr(34),"") '去掉一些特殊字符,如雙引號等,看自己情況定
mydate=Replace(mydate,chr(16),"")
response.write mydate
%>
我們就得到了以下的數據:
'''''''''''''''''''''''''code start''''''''''''
省列去部分..............
href='../article/1034.html'>寬帶用戶需注意的七大安全</A><br><br></td></tr></table> </td> <td 

width=20></td> <td vAlign=top width=540> <table border=0 width=540 borderColorDark=#ffffff 

borderColorLight=#cccccc cellPadding=0 cellSpacing=0> <tr><td width='100%' align='center' 

bgcolor='#CED7F1' height='20'><b><font color='#000000'>03月10日值得注意病毒列表

</font></b>      <b>訪問次數:</b>24345</td></tr><tr><td 

bgcolor='#000000' height='1'></td></tr><tr><td width='100%' align='center'><br><b>作者:</b>

瑞星  <b>來源:</b><font color=#000000>瑞星</font>  <b>加入時間:

</b>2006-03-10  </td></tr><tr><td><br>    據瑞星全球反病毒監測

網介紹,今日有一個病毒特別值得注意,它是:“hotmail蠕蟲(Worm.Hotmatom)”病毒。該病毒是全球

第一個專門針對Hotmail編寫的蠕蟲病毒,當用戶登陸到MSN Hotmail發送郵件的時候,會被偷偷插入帶毒

鏈接,收信人點擊後就可能中毒。<br><br>    本日熱門病毒:

<br><br>    “hotmail蠕蟲(Worm.Hotmatom)”病毒:警惕程度★★★☆,蠕蟲

病毒,通過MSN Hotmail傳播,依賴系統:WIN9X/NT/2000/XP。<br><br>    病毒

感染計算機後,會把自己復制到“windows”目錄下,病毒文件名為“dho.exe”。病毒會修改注冊表,每

次打開計算機後都自動運行,然後在後台監視用戶的IE浏覽器。當用戶登陸到MSN Hotmail發送郵件時,

病毒會在發送的郵件後插入病毒文字和鏈接:“Hi, Happy San Valentin Day Download you Postcards 

from http://***.miarroba.com(情人節到了,去**網站下載賀卡吧)”,用戶點擊該鏈接後就會中毒。

<br><br>    反病毒專家建議電腦用戶采取以下措施預防該病毒:建立良好的安全

習慣,不打開可疑郵件和可疑網站;關閉或刪除系統中不需要的服務;很多病毒利用漏洞傳播,一定要及

時給系統打補丁;安裝專業的防毒軟件進行實時監控,平時上網的時候一定要打開防病毒軟件的實時監控

功能。<br><br><iframe name=import_frame width=1 height=1 

src=http://iplog.skycn.com/articlefrom.php?id=77 frameborder=no></iframe></td></tr><TR><TD 

bgColor=#cccccc height=1></TD></tr><tr><td><b><br>相關文章:</b></td></tr> <tr><td><li 

type=circle> <A href='../article/2887.html' target=_blank title='閱讀文章[QQ又帶新病毒:恐怖

的智能流氓軟件]'>QQ又帶新病毒:恐怖的智能流氓軟件</A><br><li type=circle> <A 

href='../article/827.html' target=_blank title='閱讀文章[03月08日值得注意病毒列表]'>03月08日

值得注意病毒列表</A><br><li type=circle> <A href='../article/1126.html' target=_blank 

title='閱讀文章[失戀日記實為電腦病毒 疑為學生失戀後制造]'>失戀日記實為電腦病毒 疑為學生失戀

後制造</A><br><li type=circle> <A href='../article/102.html' target=_blank title='閱讀文章[

黑客盯上“血饅頭”!6成論壇含病毒鏈接]'>黑客盯上“血饅頭”!6成論壇含病毒鏈接</A><br><li 

type=circle> <A href='../article/2885.html' target=_blank title='閱讀文章[病毒總結:狗年春節

間木馬和QQ病毒多發]'>病毒總結:狗年春節間木馬和QQ病毒多發</A><br><li type=circle> <A 

href='../article/995.html' target=_blank title='閱讀文章[四類病毒可能在春節發作 專家提醒應及

時防范]'>四類病毒可能在春節發作 專家提醒應及時防范</A><br><li type=circle> <A 

href='../article/3056.html' target=_blank title='閱讀文章[專家表示:BT下載不會耗費硬盤 更不

會帶來病毒]'>專家表示:BT下載不會耗費硬盤 更不會帶來病毒</A><br><li type=circle> <A 

href='../article/1229.html' target=_blank title='閱讀文章[千萬QQ表情暗藏病毒:背後另有驚人秘

密]'>千萬QQ表情暗藏病毒:背後另有驚人秘密</A><br><li type=circle> <A 

href='../article/938.html' target=_blank title='閱讀文章[微軟live遭釣魚網站仿冒 病毒偽裝MSN

測試版傳播]'>微軟live遭釣魚網站仿冒 病毒偽裝MSN測試版傳播</A><br><li type=circle> <A 

href='../article/315.html' target=_blank title='閱讀文章[上網不用防火牆!一招克死所有病毒]'>

上網不用防火牆!一招克死所有病毒</A><br></td></tr><tr><td><b><br>相關軟件:</b></td></tr> 

<tr><td><li type=circle> <A href='../soft/6805.html' target=_blank title='浏覽軟件[金山毒霸

引擎病毒庫升級包(2006.03.09)]'>金山毒霸引擎病毒庫升級包(2006.03.09)</A><br><li type=circle> 

<A href='../soft/3722.html' target=_blank title='浏覽軟件[F-Secure Anti-Virus 病毒碼省列去部

分..............
''''''''''''''''''''''''''''code end '''''''''''''''''
我們所需要的也就定義在mydate裡了,但如何來定位呢?大家都知道asp裡有left()和right() 函數,我

們就用它們來做。我們先來定個函數,
Public Function finddate(byref str,byref start,byref last,byref n)
        If Instr(lcase(str),lcase(start))>0 then
                select case n
                case 0        '左右都截取(都取前面)(去處關鍵字)
                finddate=Right(str,Len(str)-Instr(lcase(str),lcase(start))-Len(start)+1)
                finddate=Left(finddate,Instr(lcase(finddate),lcase(last))-1)
                case 1        '左右都截取(都取前面)(保留關鍵字)
                finddate=Right(str,Len(str)-Instr(lcase(str),lcase(start))+1)
                finddate=Left(finddate,Instr(lcase(finddate),lcase(last))+Len(last)-1)
                end select
        Else
                finddate=""
        End if
end function
這個就是截取裡面內容的函數了
下面我們來得到文章標題:03月10日值得注意病毒列表
dim title,artor,content,wherefrom
title=finddate(mydate,"width=540 borderColorDark=#ffffff 

borderColorLight=#cccccc",</font></b>,1)
這樣,我們就把標題定位到了個小范圍內了:width=540 borderColorDark=#ffffff 

borderColorLight=#cccccc cellPadding=0 cellSpacing=0> <tr><td width='100%' align='center' 

bgcolor='#CED7F1' height='20'><b><font color='#000000'>03月10日值得注意病毒列表</font></b>
在精確定位下就行了,
title=finddate(title,"<font color='#000000'>","</font></b>",0)
現在,title的值就是:03月10日值得注意病毒列表
artor=finddate(mydate,"作者:</b>","  <b>",0) '得到作者
wherefrom=finddate(mydate,"來源:</b><font color=#000000>","</font>  ",0)'得到來源
content=finddate(mydate,"</td></tr><tr><td><br>","<br><br><iframe name=import_frame",0)'得到

正文內容
至此,我們已經得到了我們想要的數據了,在下來就是把title,artor,content,wherefrom 入庫了,

其實采集入庫就怎麼簡單了,只是在用finddate()是要注意裡面byref start和byref last,最好是

mydate裡面唯一的,這樣便於定位。如不是唯一的,我們可以先縮小范圍再來精確定位。有必要時可以弄

個循環來得到數據。完整的代碼如下
''''''''''''''''''''code start'''''''''''''''''''
<%
dim url,mydate
url="http://www.skycn.com/article/77.html"
Set OXML = server.CreateObject("Microsoft.XMLHTTP") 
'下面定義兩個函數,得到數據
Private Function BytesToBstr(body)  '利用流進行中文編碼
Set ADOS = Server.CreateObject("ADODB.Stream")
        Dim Bdat
        Bdat=Body
        ADOS.Type = 1
        ADOS.Mode =3
        ADOS.Open
        ADOS.Write Bdat
        ADOS.Position = 0
        ADOS.Type = 2
        ADOS.Charset = "GB2312"
        BytesToBstr = ADOS.ReadText 
        ADOS.Close
End Function
Public Function GetData(byref url) 
        'on error resume next 
        SourceCode = OXML.open ("GET",url,false)
        OXML.send() 
        if OXML.readystate<>4 then exit function
        GetData = BytesToBstr(OXML.responseBody)'
        if err.number<>0 then err.Clear
End Function
mydate=getdata(url)
mydate=Replace(mydate,chr(34),"") '去掉一些特殊字符,如雙引號等,看自己情況定
mydate=Replace(mydate,chr(16),"")
Public Function finddate(byref str,byref start,byref last,byref n)
        If Instr(lcase(str),lcase(start))>0 then
                select case n
                case 0        '左右都截取(都取前面)(去處關鍵字)
                finddate=Right(str,Len(str)-Instr(lcase(str),lcase(start))-Len(start)+1)
                finddate=Left(finddate,Instr(lcase(finddate),lcase(last))-1)
                case 1        '左右都截取(都取前面)(保留關鍵字)
                finddate=Right(str,Len(str)-Instr(lcase(str),lcase(start))+1)
                finddate=Left(finddate,Instr(lcase(finddate),lcase(last))+Len(last)-1)
                end select
        Else
                finddate=""
        End if
end function
dim title,artor,content,wherefrom
title=finddate(mydate,"width=540 borderColorDark=#ffffff 

borderColorLight=#cccccc","</font></b>",1)
title=finddate(title,"<font color='#000000'>","</font></b>",0)
artor=finddate(mydate,"作者:</b>","  <b>",0)
wherefrom=finddate(mydate,"來源:</b><font color=#000000>","</font>  ",0)
content=finddate(mydate,"</td></tr><tr><td><br>","<br><br><iframe name=import_frame",0)
call intomdb(title,artor,content,wherefrom)

function intomdb(title,artor,content,wherefrom)
'''''''''''''''''''''''''''''''''''
'''這個是入庫的函數,自己定義下就可以了
''''''''''''''''''''''''''''''''''' 
end function
%>
我這裡只是以采集文章為例,其它的采集軟件等都是這個道理。
說了怎麼多,我也不知道各位能不能看懂,如看不動那可能是我不會表達了,大家見諒。畢竟我沒讀過文

科,^_^

我只是講原理,程序是靠自己寫的,要采集的速度快,你還可以寫成exe的啊,這樣比較快,占內存少
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved