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

如何采集靜態文章系統

編輯:關於ASP編程
目前網站基本上都生成靜態的了,對於那些技術不是很高深的小偷來說,去偷一個文件名是以時間加隨機數來命名的
文章系統,有點困難,而目前的大多數靜態的系統都是以這樣的方式命名的,這個不像有asp?id=1 to asp?id=100這樣好
這個命名是沒規律的,那麼,這種文章系統怎麼樣采呢,以下就以自已的站www.asp315.com這例來寫一篇關於采集靜態文
章系統的教程吧!
  首先,我們打開www.asp315.com你會發現教程很多,我們隨便點一個進去吧,就點JSP教程吧,裡面還分了子類,這個不管
我們就采這一個大類,http://www.asp315.com/artical/2/1.htm,看看每一篇文章的名稱,基本上是沒規律,直接偷是沒戲了
,只能轉著彎偷啦,看到這個分類頁下面有下一頁,看看這些頁面的規律,會發現是以1.htm,2.htm命名的,這樣就好辦多了
點一下最後一頁,141.htm,這些頁面都是一樣的,整個站的分類頁都是一樣的,只要搞定了這一頁,那麼,文章頁的文件名就知道了
只要記下了文件名,那麼,偷起來就容易多了,在這裡我只講怎麼樣偷到這些文件名,不去講具體的采集某個頁面,因為那個太簡單了
不用我說,大家都會!
  首頁,那個讀取遠程的函數是不能少啦,以下我貼出來
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
然後我們先寫一個最簡單的程序來先,一步一步的來,手把手的教,(呵,廢話說多了*.*)
把上面的代碼命名為get.asp吧
再一個頁面代碼就叫getfilename.asp吧.代碼如下:
<!--#include file="get.asp"-->
<%
response.write gethttppage("http://www.asp315.com/artical/2/1.htm")
%>
呵,getfilename.asp完成了,當然,這個是最簡單的照搬啦,我們要一步一步的來改,來完善,
遠行那個當代碼,你會看到和那個頁面基本上一的頁面,當然,有些圖片顯示不了!
然後我們分析這個頁面,首頁,點右鍵,查看源代碼找到這一行
<td width="40" height="20" align="center" bgcolor="#F6F6F6">人氣</td>
當然,我們不要這麼多,光人氣二字都可以,但是為了保險,我們還是多要點,
這個是那些文件標題開始的地方,那麼我們再找到結束的地方,
<td width="490" align="center">頁數
呵,這些代碼找到了,這個多一點少一點沒事,我們代碼要一步一步完善的,
然後我們將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"">頁數")
dj1=mid(dj,l1,l2-l1)
response.write dj1
%>
再去運行這個文件,看一看,
你會發現東西少了好多,呵,也簡單多了,那麼,我們再找去規律來吧,一樣上查看源代碼,
然後你會發現每一條都是一個<tr></tr>標簽組成的,這就好辦多了,
djmore=split(dj1,"<tr>")
記住,仔細查看,你會發現多了幾個<tr>,
那就把第一個和最後二個去掉,變成這樣的了
我們來循環

response.write dj1換成
djmore=split(dj1,"<tr>")
for i=1 to ubound(djmore)-2
response.write djmore(i)
next
這樣就會把每一行都分出來了,分成了以下這樣的
  <td width="474" height="20" bgcolor="#FFFFFF"><img src="../../images/article_elite.gif"> <a href="../../news/31/200572111233207984.htm" target="_blank" title="CSS語法手冊(一)字體屬性">CSS語法手冊(一)字體屬性</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>
現在只要分析這一段就簡單多了,
我們再來針對djmore(i)這數組中的一項來寫一個代碼,
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>是為了換行,好看點,然後你看到了URL好像多了點東西,這個我們就要做一些處理了,把
url=mid(djmore(i),l3,l4-l3)變成
url=mid(djmore(i),l3+len("<a href=")+1,l4-l3-len("<a href=")-1)
呵,沒問題了,再運行時就剩下地址了,
呵,是吧,這只是每一個頁的,要全部的,你只要修改一下
dj=gethttppage("http://www.asp315.com/artical/2/1.htm")改成
for ii=1 to 141
geturl="

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved