当前位置: 首页 > 图文教程 > 网络编程 > ASP > 如何采集静态文章系统

ASP
对连串英文自动换行的解决方法 IE5.5
怎样写你自己的EMAIL组件(原理)
ASP中有关timeout超时的体会
用ASP实现从SQL Server导出数据到Access
ASP向NT域中加一个用户
ASP乱码的解决方法
关于 aspsmartupload 注册问题
利用XML不离开页面刷新数据
IIS 处理 SEARCH 请求漏洞
不用组件实现上载功能(1)
不用组件实现上载功能(2)
在网页中实现OICQ里的头像选择的下拉框
仅用xsl和asp实现分页功能
如何使用context()方法将数据置入表格(XML)
利用ASP从远程服务器上接收XML数据
将数据库里面的内容生成EXCEL
怎样在ASP里面创建统计图表
加密你的Access数据库
利用global.asp定时执行ASP
加密QueryString数据

ASP 中的 如何采集静态文章系统


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 111 ::
收藏到网摘: n/a

目前网站基本上都生成静态的了,对于那些技术不是很高深的小偷来说,去偷一个文件名是以时间加随机数来命名的
文章系统,有点困难,而目前的大多数静态的系统都是以这样的方式命名的,这个不像有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="

"