手把手教你采集纯静态数据
来源:
互联网
日期:2006-8-12
目前网站基本上都生成静态的了,对于那些技术不是很高深的小偷来说,去偷一个文件名是以时间加随机数来命名的 文章系统,有点困难,而目前的大多数静态的系统都是以这样的方式命名的,这个不像有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="http://www.asp315.com/artical/2/"&ii&".htm" dj=gethttppage(geturl) next 当然,这个循环是要搞整个过程的,就是说,要把next放到代码的最下面 然后整个代码就是 <!--#include file="get.asp"--> <% for ii=1 to 141 geturl="http://www.asp315.com/artical/2/"&ii&".htm" dj=gethttppage(geturl) 'response.write dj l1=instr(dj,"bgcolor=""#F6F6F6"">人气</td>") l2=instr(l1,dj,"<td width=""490"" align=""center"">页数") 'response.write l1&"--" 'response.write l2 'response.end dj1=mid(dj,13537,24317-13537) djmore=split(dj1,"<tr>") for i=1 to ubound(djmore)-2 l3=instr(djmore(i),"<a href=") l4=instr(l3,djmore(i),""" target=""_blank""") url=mid(djmore(i),l3+len("<a href=")+1,l4-l3-len("<a href=")-1) response.write url&" "&II& "<br>" response.flush next next %> 这二句主要是用于出错调试的 response.write url&" "&II& "<br>" response.flush 采集的过程中,意外事情也很多,网速慢都会导致采集出错,呵, 这个过程中,没有将地址入库,这个学者自已加上去就可以了, 然后再从数据库里一条一条的读出来,一个一个的页面采, 这样就和采动态的站的一样了! 就讲到这里,很多东西要自已去钻研!
更多的手把手教你采集纯静态数据请到论坛查看: http://BBS.TC711.COM
【 双击滚屏 】 【 评论 】 【 收藏 】 【 打印 】 【 关闭 】
来源:
互联网
日期:2006-8-12
|
|
|