网站采集器:是一种可以快速收集和发布网上信息的程序,一般分为两大功能:信息收集和处理功能,信息发布功能。
作为一种可以快速增加网站内容的程序,采集器一直以来都受到广大个人站长的重视。我们一方面想尽方法阻止别人采集自己的网站,另一方面也想用采集器采集一下别人的网站来丰富自己站点的内容。采集器是什么时候产生的我们已经无从知晓了,目前国内各大文章管理系统都已经集成了采集和防采集功能,即便国内的某些大网站也或多或少的使用了信息采集,可见人们对采集的热衷,毕竟使用采集省时省力嘛。现在的采集产品非常多,功能也是各有所长。但长久以来不论是哪种采集器、不论开发者说的程序如何简单易用,采集器程序对大多数普通用户来说还是存在难以使用的情况。那么,下面我来说一下采集器的工作原理希望会给大家在使用采集器的过程中带来帮助。
其实采集器的基本工作原理和流程是很简单的,简单划分的话就是:
获取数据。
根据不同的采集器种类和开发语言的不同,获取方式有些不同。但他们都是通过访问被采集站点来提取被采集站点的相应信息。采集程序通过读取采集规则中的信息来确定应该以什么样的方式来访问被采集网站,被采集网站中哪些地址是有效的,哪些内容是该收集的,如何提取有用的信息等等,这些都是由采集规则指定的。
我们以老牌的BFC采集器为例(免费版本的功能较多且发布的内容中没有广告),采集规则中首先需要指定采集内容列表的地址,BFC中称为“列表URL”,这个列表页面中包含你要采集的内容链接,比如我们来采集一下BFC官方论坛的“BFC采集器应用交流”这个板块中的内容,链接地址是:http://bbs.bfcstudio.com/thread.php?fid=9。
我们就可以把列表URL设置为这个地址,现在列表地址有了,但这个页面我们只想截取其中某一区域中的内容进行采集,怎么办呢?这就需要设置“列表范围”了,这里需要用到“列表起始字符串”和“列表结束字符串”,顾名思义列表起始字符串就是你所需要的内容从页面代码的哪个地方开始,列表结束字符串就是你所需要的内容到哪个地方结束。
这里是所有采集程序最令大家不好理解的也是规则设置的难点,其实只要你肯认真查看列表页面代码的话,这是很容易做的。只要大家记住下面的基本原则,你在制作规则时一定不会被起始字符串和结束字符串难倒:
起始字符串标准:在页面html代码中,所需内容之前有且仅有一次出现(如多次出现,以第一次出现的位置为准)。
结束字符串标准:在页面html代码中,起始字符串之后有且仅有一次出现(如多次出现,以第一次出现的位置为准)。记住这里是起始字符串之后。
起始字符串和结束字符串是成对出现的,采集器会截取他们之间的内容作为有效内容。他们不一定是代码中唯一存在的,但是每对之间必须是你需要的内容(采集论坛回贴很有用)。多用Ctrl+F你会找到合适的标准。
关于起始字符串和结束字符串的另外一种解释:
起始字符串:
在采集到的代码中处于有效文本信息之前的一段字符串,这段字符串必须满足以下条件:在有效信息之前的内容中是唯一的。(如不唯一则以第一次出现的位置为准)在有效信息之前的内容中必须存在一个或以上的起始字符串(程序将以该字符串第一次出现的位置为准),否则内容将会提取失败。
结束字符串:
在采集到的代码中处于有效文本信息之后的一段字符串,这段字符串必须满足以下条件:从 起始字符串 开始到有效信息结束的内容中不得包含该字符串。在有效信息之后的内容中必须存在一个或以上的结束字符串(程序将以该字符串从起始字符串开始第一次出现的位置为准),否则内容将会提取失败。有网友想到了一种更好的设置方式,可以使用DW等可视化页面设计工具进行关键字的提取,具体操作请看以下地址:http://bbs.bfcstudio.com/read.php?tid=692
要想用好采集器,你就一定要搞清楚如何设置起始字符串和结束字符串,这是所有采集程序的基础所在,要知道以现有计算机的能力是不可能自己就知道你需要的内容的,不止是软件问题。
好了先不说其他的,现在设置好了起始和结束字符串信息,列表的有效范围已经划定了,采集程序会自动提取到该区域中存在的链接。
如果在这段区域中还存在你不需要的链接内容,你还可以使用更细致的链接过滤功能,在BFC采集器中提供的是根据网址内容进行过滤,可以设定网址中必须包含的内容或者必须不包含的内容。也就是BFC规则管理器中的URL包含和URL排除。
其他一些采集器中也基本都提供了类似的功能,灵活运用的话都可以达到相同的目的。
关于列表分页:多数采集器都提供了比较完善的列表分页设置功能。对于这个功能,应用最广泛的是有规则分页类型,类似下面的分页方式:
thread.php?fid=2&search=&page=1
thread.php?fid=2&search=&page=2
thread.php?fid=2&search=&page=3
thread.php?fid=2&search=&page=4
thread.php?fid=2&search=&page=5
如果遇到类似这种分页,设置起来就简单了,对于BFC采集器可以用批量指定的方法,并把url字符串设置为thread.php?fid=2&search=&page= {page}。
{page}范围设置为从1到5(有几页就填几)。
{page}:是BFC采集器的分页变量,可以在指定范围内自动递增或递减。
另一种设置分页的方法显得比较笨一些但简单,就是手动添加功能,选中这里后你只要填好你需要采集的列表地址就可以了,每行一条,有时间的话随便你填多少。
还有一种分页设置,就是设定下一页链接代码的起始和结束代码,程序会根据设定的链接信息自动在当前页中找到下一页的链接,这种设置比较麻烦一些但效果确实相当不错。
以上是三种设定信息分页的方法,至于采集程序如何去运作和区别我们就不必关心太多了,这三种方法的设置方式同样适用于内容分页的设置。
现在我们有了需要采集的地址列表,下面就是设置采集内容了。
内容提取设置:
在对方网站中,我们需要的一般就是文章标题和文章内容,采集过程中,采集器会把采集地址列表中的文章内容的HTML代码下载到本地并根据规则中设定的相应信息提取文章的相关内容。
先说标题的提取,采集器的数据处理模块会根据“标题起始字符串”和“标题结束字符串”截取当前文章代码中的信息作为标题。这里的“标题起始字符串”和“标题结束字符串”设置原则和前面讲的列表范围截取原则是相同的。
对于想直接用链接名称作为标题的朋友,BFC采集器提供了一个简单的设置标题规则的方法,直接选中自动提取内容标题选项就可以了,选中后就不需要再填写标题起始字符串和标题结束字符串了。如下图所示:
(BFC采集器中可无需设置标题规则)
当然对于列表中链接名称为空或图片链接的情况,你还是需要设置标题起始字符串和结束字符串的。
再说正文提取:
和标题及列表范围提取相同,设置好你的正文起始字符串和结束字符串就可以了。
这里着重要说的是对正文内容的处理,我们知道刚采集回来的内容就是一段html代码,里面包含的内容我们并不清楚,也许会带有恶意代码,或者影响视觉效果的标签,如table、tr、td、tbody等。所以如果要发布到论坛里,最好是使用UBB编码进行发布以确保论坛的安全和兼容性(有可能你用的那个用户不能发html贴,造成发贴失败)。所以基本上所有的采集器都提供了转换代码格式的功能。
那么如果需要向CMS或其他不支持UBB代码的系统中发布内容该怎么办呢?很简单,就用HTML发布,不过之前最好在规则中设置过滤有可能引起版面混乱的标签。这在BFC采集器中是非常方便的:
选中你需要过滤的标签就可以了。
再说正文分页,这也没什么可说的了,和列表分页是相同的设置方法,设置好分页规则就可以了。
现在我们看一下如何处理正文或标题内容中我们不需要或者需要替换的内容,BFC采集器中是以各类元素的形式进行这类操作的,经常用到的是过滤元素和替换元素:
过滤元素:用来删除你不需要的内容,作用范围可以是标题也可以是正文内容。
替换元素:用来替换原内容为你自己设定的内容。作用范围可以是标题也可以是正文内容。
使用这两种元素可以很好的对你采集到的内容进行处理。
关于详细的过滤元素和替换元素的使用方法可以查看这里:
http://bbs.bfcstudio.com/read.php?tid=1159
http://bbs.bfcstudio.com/read.php?tid=1160
除了以上两种元素,BFC还提供了插入元素和引用元素。
插入元素可以把指定(动态或静态内容)内容插入标题或正文的指定位置。
引用元素的作用是把引用元素指定的内容(可以是从采集内容中通过起始/结束字符串动态截取的,也可以自行指定静态内容)赋值给引用元素的引用目标字段,作为发送数据包字段的一部分,即作为某个表单字段的值。由于使用的灵活性很大,我们不再对它进行具体介绍。
更深入的数据处理:
假如这些处理功能还是无法满足你的要求,你还需要进行更复杂的转换,怎么办呢?
那就用扩展函数吧,扩展函数游离于BFC采集器之外,是可以自定义的,当然了,前提是你对javascript或vbscript相当的熟悉,你可以自行开发这两种脚本语言的函数代码以适应自己的需求,比如BFC采集器自带的火星文和简繁体转换脚本,还有个UBB代码转换脚本供你替换程序的内置UBB脚本转换,根据说明文档和那些函数脚本你可以制作自己的扩展函数。
现在采集内容我们已经有了,那么发布到哪里呢?BFC的发布目标是由规则来指定的,每个规则只能针对某一个板块进行发布(当然了,你也可以在采集前动态指定),这是和其他采集器不同的地方,在规则信息的第一页设置目标论坛和目标板块就可以了,同时这里还可以设置是否每次采集都弹出目标设定窗口(重新分配目标论坛和板块)和只采集不发布(只采集到本地而不发布到网站,适用于喜欢本地浏览的朋友)功能。
现在采集内容部分我们已经讲解完毕。
发布数据
数据的发布与数据采集相比要简单得多(除非你想自己做发布插件),只要设置好你的网站信息就可以了,需要注意的是以下几点:
[list=1]
网站地址,网站地址一定要按照程序的要求填写。不同程序有不同的要求,按照实际情况填写就可以了。
登录地址,这是很重要的,否则采集程序会无法登录用户,也就无法提交内容。
提交地址,这就不用提了,一定要设置好(一般插件中都带有默认信息,用默认的一般不会有问题)。
用户信息,现在的采集程序都提供了多用户发布的功能,所以你的用户列表一定要维护好,注意他们是否有发帖权限或者各种类型帖子的权限。
板块信息
再一点需要注意的就是你的用户登录信息是否过期,大多数采集器会在采集时会自动登录用户,还有一些是需要提供登录后的Cookies信息,如果登录信息过期,也会造成发布失败,所以最好定期维护登录信息,至于多长时间维护一次则要看你登录时选中的登录过期时间了。
做到上面的几点你的采集内容就可以正常发布了。