编写larbin抓取到的页面处理模块

发布: 2009-07-19 13:59

用户自定义的页面处理模块的入口位于文件 ./src/interf/useroutput.cc

通过不同的宏控制使用哪个模块,larbin自带的几个简单模块:SIMPLE_SAVE, MIRROR_SAVE, STATS_OUTPUT, DEFAULT_OUTPUT

默认开启的是DEFAULT_OUTPUT

这些宏的定义在./src/options.h的开关部分,如果要新加一个模块,需要在这定义一个宏。

现在编写一个直接将url,header, html 主体输出的控制台的模块,CONOSLEOUTPUT

// options.h
#define CONSOLEOUTPUT

// .src/interf/目录
cp -v defaultuseroutput.cc consoleoutput.cc

编辑consoleoutput.cc

在文件上半部分添加一行
#define BIGSTATS 1

重新编译larbin

再运行的话是不是满屏幕的字符飞跑了。


关于consoleoutput.cc文件的解释:
该文件包含四个函数:

void loaded(html *page);
void failure(url *u, FetchError reson);
void initUserOutput();
void outputStats(int fds);

这四个函数是编写larbin用户模块必须实现的函数,larbin 在抓取到页面后根据不同的情况调用这些函数。

larbin 模块的一个奇怪的地方是模块直接使用#include指令包含进 useroutput.cc的,如果这个模块有许多个.cc文件组成的话,就不好办了。
这样包含还有一个坏处,改动自己的模块后,重新make不会编译这个模块,还要把useroutput.o删除掉才能让改动生效,因为这个模块编译进useroutput.o中去了,而这个文件没有动,所以make不会重新编译它。



原文: http://qtchina.tk/?q=node/312

Powered by zexport