采集器软件设计之道(了解采集器如何工作)
来源: admin|点击:次|2011-04-12 15:53
“小型网站本不需要维护,只是因为你的程序太笨了,所以你成了无休止的网站维护者。”—沉默的海
前言
经常有朋友在亚普采集器QQ群里问起采集的相关问题,每次针对个人回答的时候,总是无法说得很全面,很多朋友表示不满意,今天发表此文,详细介绍一下采集程序的设计思路。其实“沉默的海”本是一名业余ASP爱好者,ASP综合技术水平应该说是一个“二把刀”。但对于采集程序的编写,应该说还有点研究,因为我是因为采集程序才迷上编程、迷上ASP,也是从这里开始了自己的编程之路。
一、 采集程序的用处。
这个问题也许不用多说,每个站长可能都感觉特别的需要,因为我们精力必竟有限,不象那些大的网络公司,有专门的新闻记者和网络写手。这样以来,要想使自己的网站内容丰富起来,借签别的网站上的内容无疑成了一个最好的办法,也就是这个原因,数以千计的站长不知不觉中成了“复制粘贴”的操作手,在和站长朋友的聊天中得知,多数站长每天做的工作就是“复制粘贴”。这是一个多么枯燥的工作啊,但,为了自己的希望也不得不去做这些最让人讨厌的事情。
这样以来,采集程序成为站长们必不可少的一个工具,给站长们带来了很多的便利,即使我们的网站内容得到了丰富,又节省了很多的精力和时间。(http://www.5reg.com和也许可以作为采集程序示例网站,无需要任何更新,网站永远都是新的。)
但,有多站长却又不会自己设计采集软件,从网上下载的程序要么是收费的,要么是功能不全的,往往不能让人满意。即便是收费的,用起来也不是十分方便,因为需要很多手工的操作。
“沉默的海”认为:采集程序要想真正发挥其方便快捷的优势,最好的一个办法是针对自己的网站量身设计,而后和网站集成在一起,成为网站的一部分,只有这样,才能算是一个成功的采集程序。
可是,采集程序怎么做呢?难吗?
二、 采集程序怎么做。
“沉默的海”认为,采集程序设计一点都不难,只要有一些ASP编程常识,我觉得一天之内学会它,是没有问题的。(相信我的话,你就把文章看完,我保证不会让你失望;不相信我的话也请你看完,我保证看完后你会相信我的话。)
采集程序的基本原理其实很简单:包括两个步骤:
1、 下载目标网页;
大家知道,采集程序帮我们做的工作其实就是“复制和粘贴”,那么要把一个网站复制下来,首页你需要把网页打开啊,这个过程其实就是下载目标网页,只不过我们不是人工下载,而是利用程序来完成它。
这里有“核心技术”:XMLHTTP,它可以把网页下载以备下一步的使用。
2、 提取网页中我们需要的内容;
上一步我们完成了第一步:下载网页。
但并不是所有下载的内容都是我们需要的,所以还要做的工作就是,提取我们需要的内容,去除不需要的,存入数据库。这一步的主要技术是:正则表达式。
三、 做什么样的采集程序。
做了以上两步,应该说一个完整的采集程序已经完成了。它可以采集到我们需要的内容,而后存入数据库,供我们使用。可是,这是我们真正需要的吗?显然不是,因为我们既然要用采集程序来支持我们的网站,那就要用它来完成几乎所以的工作。我认为:如果你的网站加了采集程序,那么即使长年不维护,网站依然是新的,这样才算是成功的。
上面的采集程序显然做不到,因为你还得启动采集程序,然后把数据导入网站的数据库,然后生成html,等等等等,还有很多工作需要我们来做。我们理想中的采集程序是不需要人工来做任何工作的,所以在完成采集程序之后我们还要做一些配套的程序,以保证采集程序的运行,和与网站的完美集成。
1、 自动启动采集程序;
2、 将采集数据直接写入网站数据库;
3、 配套生成html等后续工作。
做了以上三点,我们才可以说自己做了一套还算可以的采集程序,那么我们具体应该怎么做呢,请看下面说明。
上面的采集程序显然做不到,因为你还得启动采集程序,然后把数据导入网站的数据库,然后生成html,等等等等,还有很多工作需要我们来做。我们理想中的采集程序是不需要人工来做任何工作的,所以在完成采集程序之后我们还要做一些配套的程序,以保证采集程序的运行,和与网站的完美集成。
1、 自动启动采集程序;
2、 将采集数据直接写入网站数据库;
3、 配套生成html等后续工作。
做了以上三点,我们才可以说自己做了一套还算可以的采集程序,那么我们具体应该怎么做呢,请看《采集程序设计经验交流(二)—下载网页》。
采集程序设计经验交流(二)——下载网页(1)
“小网站本不需要维护,只是因为你的程序太笨了,所以你成了无休止的网站维护者。”
网页下载方法1(XMLHTTP应用)
用到的对象:XMLHTTP,只需三行代码,即可完成网页下载:
第一步:创建对象
Set ms = CreateObject("Microsoft.XMLHTTP")
这行代码用于创建一个xmlhttp对象,其中ms为创建对象的名称,ASP编程经常用到,可以随便写,不再赘述。
第二步:设置参数
ms.open "GET",url,False
其中url是要下载网页的网址,把它换成你的目标网页网址即可,格式为:http://www.5reg.com,一定要写完整,不可省略http://;
“GET”是打开的方法,当然也可以用POST,产生的效果和HTML里的表单提交方式是一样的。
第三步:发送数据
ms.Send()
此行代码用于发送数据并下载,下载后的数据储存在变量responsebody里。
下面我们以下载“亚普采集器知识库(http://www.5reg.com)”首页为例进行一下说明
代码:
Set ms = CreateObject("Microsoft.XMLHTTP")
ms.Open "GET","http://www.5reg.com",False
ms.Send()
response.write ms.responseBody
运行以上代码大家可以发现,我们已经成功下载了http://www.5reg.com
这里有个问题需要注意一下,有时候网址很长,直接加在第二行代码里会显得很乱,那么,我们可以用一个变量来代替一下,如下:
url="http://www.5reg.com"
Set ms = CreateObject("Microsoft.XMLHTTP")
ms.Open "GET",url ,False
ms.Send()
response.write ms.responseBody
这样以来代码就变得整齐多了。
保存网页(Stream应用)
前面我们利用三行代码完成了对网页的下载,可是下载到的内容是乱码,在这里我们来解决乱码问题并把它保存成一个txt文件。
创建txt文件有两种方法:一是FSO是一种常见的创建方法,但是在和xmlhttp配合使用时常会出现一些问题,这里不再详细介绍。二是运用Stream,stream是xmlhttp的最佳拍档,我们下来介绍下使用方法:
1、 创建stream对象
代码:Set mss = CreateObject("ADODB.Stream")
2、 设置参数
代码:
mss.Mode = 3
mss.Type = 1
其中Mode模式,当值为1时为读取模式,2为写入模式,3为读写模式,这里我们为了操作不受限制将其设置为3;type为返回数据类型,1为Binary,2为Text,我们设置为1
3、 打开对象
代码:mss.open()
4、 写入数据
代码:mss.Write(“内容”)
Write是Stream的一个方法,用于写入数据。
5、 保存到文件
mss.SaveToFile(FileName,[Options])
Savetofile方法,此方法用于将内容保存到文件中,其中filename为文件名,可以随便写,options为存取选项,必填,为了避免内容叠加我们设置为2。(请支持网站http://www.5reg.com)
6、 关闭对象
代码:set mss = nothing
关闭对象,并释放内存。
以上为保存内容的几个步骤,为了便于理解,我们举例说明:
依然以“亚普采集器官网http://www.5reg.com”为例:
url="http://www.5reg.com"
Set ms = CreateObject("Microsoft.XMLHTTP")
ms.Open "GET",url ,False
ms.Send()
上以为下载网页的代码
Set mss = CreateObject("ADODB.Stream")
mss.Mode = 3
mss.Type = 1
mss.open()
mss.Write(ms.responseBody)
mss.SaveToFile(“1.txt”,2)
set mss=nothing
set ms=nothing
运行以上代码我们可以看到,程序已将http://www.5reg.com 保存到了1.txt文件中,并且乱码问题已经解决。 保存网页(Stream应用)
前面我们利用三行代码完成了对网页的下载,可是下载到的内容是乱码,在这里我们来解决乱码问题并把它保存成一个txt文件。
创建txt文件有两种方法:一是FSO是一种常见的创建方法,但是在和xmlhttp配合使用时常会出现一些问题,这里不再详细介绍。二是运用Stream,stream是xmlhttp的最佳拍档,我们下来介绍下使用方法:
1、 创建stream对象
代码:Set mss = CreateObject("ADODB.Stream")
2、 设置参数
代码:
mss.Mode = 3
mss.Type = 1
其中Mode模式,当值为1时为读取模式,2为写入模式,3为读写模式,这里我们为了操作不受限制将其设置为3;type为返回数据类型,1为Binary,2为Text,我们设置为1
3、 打开对象
代码:mss.open()
4、 写入数据
代码:mss.Write(“内容”)
Write是Stream的一个方法,用于写入数据。
5、 保存到文件
mss.SaveToFile(FileName,[Options])
Savetofile方法,此方法用于将内容保存到文件中,其中filename为文件名,可以随便写,options为存取选项,必填,为了避免内容叠加我们设置为2。(请支持网站http://www.5reg.com)
6、 关闭对象
代码:set mss = nothing
关闭对象,并释放内存。
以上为保存内容的几个步骤,为了便于理解,我们举例说明:
依然以“http://www.5reg.com”为例:
url="http://www.5reg.com"
Set ms = CreateObject("Microsoft.XMLHTTP")
ms.Open "GET",url ,False
ms.Send()
上以为下载网页的代码
Set mss = CreateObject("ADODB.Stream")
mss.Mode = 3
mss.Type = 1
mss.open()
mss.Write(ms.responseBody)
mss.SaveToFile(“1.txt”,2)
set mss=nothing
set ms=nothing
运行以上代码我们可以看到,程序已将http://www.5reg.com 保存到了1.txt文件中,并且乱码问题已经解决。