目前網(wǎng)站基本上都生成靜態(tài)的了,對(duì)于那些技術(shù)不是很高深的小偷來(lái)說(shuō),去偷一個(gè)文件名是以時(shí)間加隨機(jī)數(shù)來(lái)命名的
文章系統(tǒng),有點(diǎn)困難,而目前的大多數(shù)靜態(tài)的系統(tǒng)都是以這樣的方式命名的,這個(gè)不像有asp?id=1 to asp?id=100這樣好
這個(gè)命名是沒(méi)規(guī)律的,那么,這種文章系統(tǒng)怎么樣采呢,以下就以自已的站www.asp315.com這例來(lái)寫一篇關(guān)于采集靜態(tài)文
章系統(tǒng)的教程吧!
首先,我們打開(kāi)www.asp315.com你會(huì)發(fā)現(xiàn)教程很多,我們隨便點(diǎn)一個(gè)進(jìn)去吧,就點(diǎn)JSP教程吧,里面還分了子類,這個(gè)不管
我們就采這一個(gè)大類,http://www.asp315.com/artical/2/1.htm,看看每一篇文章的名稱,基本上是沒(méi)規(guī)律,直接偷是沒(méi)戲了
,只能轉(zhuǎn)著彎偷啦,看到這個(gè)分類頁(yè)下面有下一頁(yè),看看這些頁(yè)面的規(guī)律,會(huì)發(fā)現(xiàn)是以1.htm,2.htm命名的,這樣就好辦多了
點(diǎn)一下最后一頁(yè),141.htm,這些頁(yè)面都是一樣的,整個(gè)站的分類頁(yè)都是一樣的,只要搞定了這一頁(yè),那么,文章頁(yè)的文件名就知道了
只要記下了文件名,那么,偷起來(lái)就容易多了,在這里我只講怎么樣偷到這些文件名,不去講具體的采集某個(gè)頁(yè)面,因?yàn)槟莻€(gè)太簡(jiǎn)單了
不用我說(shuō),大家都會(huì)!
首頁(yè),那個(gè)讀取遠(yuǎn)程的函數(shù)是不能少啦,以下我貼出來(lái)
Function getHTTPPage(Path)
t = GetBody(Path)
getHTTPPage=BytesToBstr(t,"gb2312")
End function
Function GetBody(url)
on error resume next
Set Retrieval = CreateObject("Microsoft.XMLHTTP")
With Retrieval
.Open "get", url, False, "", ""
.Send
GetBody = .ResponseBody
End With
Set Retrieval = Nothing
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
然后我們先寫一個(gè)最簡(jiǎn)單的程序來(lái)先,一步一步的來(lái),手把手的教,(呵,廢話說(shuō)多了*.*)
把上面的代碼命名為get.asp吧
再一個(gè)頁(yè)面代碼就叫g(shù)etfilename.asp吧.代碼如下:
!--#include file="get.asp"-->
%
response.write gethttppage("http://www.asp315.com/artical/2/1.htm")
%>
呵,getfilename.asp完成了,當(dāng)然,這個(gè)是最簡(jiǎn)單的照搬啦,我們要一步一步的來(lái)改,來(lái)完善,
遠(yuǎn)行那個(gè)當(dāng)代碼,你會(huì)看到和那個(gè)頁(yè)面基本上一的頁(yè)面,當(dāng)然,有些圖片顯示不了!
然后我們分析這個(gè)頁(yè)面,首頁(yè),點(diǎn)右鍵,查看源代碼找到這一行
td width="40" height="20" align="center" bgcolor="#F6F6F6">人氣/td>
當(dāng)然,我們不要這么多,光人氣二字都可以,但是為了保險(xiǎn),我們還是多要點(diǎn),
這個(gè)是那些文件標(biāo)題開(kāi)始的地方,那么我們?cè)僬业浇Y(jié)束的地方,
td width="490" align="center">頁(yè)數(shù)
呵,這些代碼找到了,這個(gè)多一點(diǎn)少一點(diǎn)沒(méi)事,我們代碼要一步一步完善的,
然后我們將getfilename.asp改成
!--#include file="get.asp"-->
%
dim dj,l1,l2
dj=gethttppage("http://www.asp315.com/artical/2/1.htm")
l1=instr(dj,"td width=""40"" height=""20"" align=""center"" bgcolor=""#F6F6F6"">人氣/td>")
l2=instr(l1,dj,"td width=""490"" align=""center"">頁(yè)數(shù)")
dj1=mid(dj,l1,l2-l1)
response.write dj1
%>
再去運(yùn)行這個(gè)文件,看一看,
你會(huì)發(fā)現(xiàn)東西少了好多,呵,也簡(jiǎn)單多了,那么,我們?cè)僬胰ヒ?guī)律來(lái)吧,一樣上查看源代碼,
然后你會(huì)發(fā)現(xiàn)每一條都是一個(gè)tr>/tr>標(biāo)簽組成的,這就好辦多了,
djmore=split(dj1,"tr>")
記住,仔細(xì)查看,你會(huì)發(fā)現(xiàn)多了幾個(gè)tr>,
那就把第一個(gè)和最后二個(gè)去掉,變成這樣的了
我們來(lái)循環(huán)
把
response.write dj1換成
djmore=split(dj1,"tr>")
for i=1 to ubound(djmore)-2
response.write djmore(i)
next
這樣就會(huì)把每一行都分出來(lái)了,分成了以下這樣的
td width="474" height="20" bgcolor="#FFFFFF">img src="../../images/article_elite.gif"> a href="../../news/31/200572111233207984.htm" target="_blank" title="CSS語(yǔ)法手冊(cè)(一)字體屬性">CSS語(yǔ)法手冊(cè)(一)字體屬性/a>/td>
td width="80" height="20" align="center" bgcolor="#FFFFFF">2005-7-21/td>
td width="40" height="20" align="center" bgcolor="#FFFFFF">script src="../../showcount.asp?id=18152">/script>/td>
/tr>
現(xiàn)在只要分析這一段就簡(jiǎn)單多了,
我們?cè)賮?lái)針對(duì)djmore(i)這數(shù)組中的一項(xiàng)來(lái)寫一個(gè)代碼,
l3=instr(djmore(i),"a href=")
l4=instr(l3,djmore(i),""" target=""_blank""")
url=mid(djmore(i),l3,l4-l3)
response.wrie url"br>"
這里是為了方便才寫成這樣的,
把以上這段代替前面的
response.write djmore(i)
這里加BR>是為了換行,好看點(diǎn),然后你看到了URL好像多了點(diǎn)東西,這個(gè)我們就要做一些處理了,把
url=mid(djmore(i),l3,l4-l3)變成
url=mid(djmore(i),l3+len("a href=")+1,l4-l3-len("a href=")-1)
呵,沒(méi)問(wèn)題了,再運(yùn)行時(shí)就剩下地址了,
呵,是吧,這只是每一個(gè)頁(yè)的,要全部的,你只要修改一下
dj=gethttppage("http://www.asp315.com/artical/2/1.htm")改成
for ii=1 to 141
geturl="