讯速开源分布式定向采集系统(ispider)
欢迎加入开源搜索引擎QQ讨论群:1831546 系统构建服务请联QQ:4451310 采集演示系统 检索系统介绍 源码下载 学习资料 开发手册
目录
系统简介
安装运行
采集配置
模版配置实例
展开
系统简介
讯速采集系统(ispider)是一个开源的数据采集系统,开发始于2008年,早期版本属于实验版本仅仅支持数据采集功能,不能精准的抽取网页内容,在此基础上发展的分布式定向采集系统具备多节点同时采集功能,同时支持模版的方式抽取内容,大大提高系统的可用性和网络带宽利用率。基础通信库使用libsbase, 字符集识别使用libcharset(C++),核心代>码全部由纯C语言实现,采用面向对象设计思想,运行于类unix系统linux/BSD。
采集系统模块包括:
URL管理:用于URL排重,URL优先级任务管理,数据更新任务管理等;
域名解析:异步域名解析用于大规模host解析;
数据采集:实现HTTP协议的GET、POST采集;
数据转码:对采集数据编码识别并统一转码;
数据抽取:通过HTML抽取工具或者模版匹配方式抽取数据。
ispider SVN地址:http://libibase.googlecode.com/svn/x/ispider
本文采用ispider作为实例讲解设计和实现采集系统,ispider为定向采集系统,可以通过配置抓取树和抽取模版获得结构化数据直接导入数据库和生成libibase源数据格式。ispider代码下载地址:http://code.ithunder.org/ispider/。
安装运行
1.安装
安装之前请确认已经安装pcre和zlib,缺少的库请自行安装;
mkdir -p /data/build; cd /data/build;
wget http://code.ithunder.org/howto-ispider/ispider.sh&& chmod +x ispider.sh && ./ispider.sh
或者编辑脚本运行
#!/bin/bash
vevbase="1.0.2"
vsbase="1.0.5"
vibase="0.5.22"
vchardet="0.0.4"
vispider="0.0.2"
wget http://code.ithunder.org/libevbase-${vevbase}.tar.gz
wget http://code.ithunder.org/libsbase-${vsbase}.tar.gz
wget http://code.ithunder.org/libibase-${vibase}.tar.gz
wget http://code.ithunder.org/libchardet-${vchardet}.tar.gz
wget http://code.ithunder.org/ispider-${vispider}.tar.gz
tar -zxf libevbase-${vevbase}.tar.gz
tar -zxf libsbase-${vsbase}.tar.gz
tar -zxf libibase-${vibase}.tar.gz
tar -zxf libchardet-${vchardet}.tar.gz
tar -zxf ispider-${vispider}.tar.gz
cd libevbase-${vevbase}
./configure --prefix=/usr && make install
cd ../libsbase-${vsbase}
./configure --prefix=/usr && make install
cd ../libibase-${vibase}
./configure --prefix=/usr && make install
cd ../libibase-${vchardet}
./configure --prefix=/usr && make install
cd ../ispider-${vispider}
./configure --prefix=/usr && make install
ldconfig
cd ../
2.配置
mkdir -p /data/tmp;cd /data/tmp;
wget http://code.ithunder.org/howto-ispider/monitor.tar.gz && tar -xf monitor.tar.gz
perl -i -p -e "s@/tmp@/data/tmp@g" /etc/imonitord.ini
3.运行
a.启动任务控制服务
/usr/sbin/imonitord -d -c /etc/imonitord.ini
b.启动采集任务
/usr/bin/ispider -d -c /etc/ipager.ini
/usr/bin/ispider -d -c /etc/ilister.ini
c.启动抽取任务
/usr/bin/iextractor -d -c /etc/iextractor.ini
通过rpm安装和使用的请参考:http://code.ithunder.org/howto-ispider/readme.txt
编译安装: 先确认机器是否安装pcre和zlib,需要自行安装
1. mkdir -p /data/build; cd /data/build/
2. 下载源码包并解压安装
wget http://code.ithunder.org/howto-ispider/source-20120418140633.tar.gz &&
tar -xf source-20120418140633.tar.gz; rpm -Uvh srpms/*;
3. 执行build.sh 编译和安装
运行:
1.修改monitor配置文件perl -i -p -e "s@/tmp@/data/tmp@g" /etc/imonitord.ini
2.将monitor.tar.gz 解压放到/data/tmp目录下
3. 启动服务
service imonitord start
service ipager start
service ilister start
service iextractor start
4. 通过http://host:3080 查看监控后台
采集配置
定向采集系统最终得到结构化的数据需要设定结构化的数据表,配置抓取树指导爬虫抓取数据,配置模版抽取数据对应到结构化数据表。
数据表
(1).数据表字段类型:
字段类型 备注
string 文本索引字段
int int 索引字段
long long(int64_t)索引字段
double double 索引字段
display 用于显示的文本字段
(2).配置数据表,点击“数据库配置”
图1
a.添加数据表,点击绿色“✚”,输入数据表名字,回车或者点击按钮“ok”;
图2
b.添加文本索引字段,点击数据表名“bbs”,右侧“字段名”处输入字段名,选择字段类型“text”,“索引”框打勾,回车或者点击“ok”;
图3
c.添加int索引字段,输入字段名,选择类型为int,“索引”框打勾,回车或者点击“ok”;
图4
d.添加long索引字段,输入字段名,选择类型为long,“索引”框打勾,回车或者点击“ok”;
图5
e.添加double索引字段,输入字段名,选择类型为double,“索引”框打勾,回车或者点击“ok”;
图6
f.添加display字段,输入字段名,选择类型为text,“索引”框去掉打勾,回车或者点击“ok”;
图7
抓取树配置
a.点击顶端“模版配置”,点击root所在行“✚”,添加抓取站点;
图8
b. 依层次添加列表页及内容页节点;
图10
:点击站点节点如:“水木论坛”,输入网址访问;
图10
b.输入模版,如图11:
(a)对照代码框,在模版框输入正则表达式;
(b)选择“公共字段”表示用于抽取公共内容;
(c)勾选“重复匹配多条”表示用于多次匹配;
(d)勾选“忽略大小写”表示用于正则表达式忽略大小写;
(e)选择对应的数据表;
(f)点击测试,检查匹配结果是否跟网页内容符合;
图11
c.配置模版,如图12:对匹配结果逐个进行配置,然后点击“ok”提交模版;
图12
模版配置选项:
选项 说明
链接 作为链接抽取且放入 URL 队列
关联节点 链接对应的抓取树节点,勾选“链接”后可选择
标识性链接 作为数据导出的标识链接,非标识链接不导出数据,勾选“链接”后可选择
列表页 列表页链接会自动放入更新队列,勾选“链接”后可选择
分页 勾选“链接”后可选择
对应字段 抽取后对应到数据表的某字段
内容合并 同属一个字段的内容拼接在一起
时间戳 转换文字为标准的 UNIX 时间
URL 补齐 URL 路径,不需要放入采集队列
去 HTML 去除 HTML 代码
去广告 去噪
模版配置实例
a.首页论坛列表模版,如图12为“水木论坛”首页抽取论坛信息和论坛链接的模版;
<a .*?href="(/nForum/board/.*?)".*?>\[(.*?)\].*?</a>
b.帖子列表页模版,如图13为抽取论坛帖子列表的模版实例;
<tr ><td .*?>.*?</td><td .*?><a href="(/nForum/article/.*?)">(.*?)</a>.*?</td>.*?<td .*?>.*?<a href="(/nForum/user/query/.*?)" .*?>(.*?)</a>.*?</td><td .*?>(.*?)</td><td .*?>.*?</td>.*?</tr>
图13
c.帖子列表页分页,如图14为帖子列表分页模版实例;
<li class="page-normal"><a href="(.*?\?p=[0-9]*?)" .*?>[0-9]*?</a></li>
图14
d.帖子模版,如图15为帖子页面模版实例;
<li class="page-normal"><a href="(.*?\?p=[0-9]*?)" .*?>[0-9]*?</a></li>
图16
如图16:
a.点击顶端“URL管理”;
b.选择站点;
c.输入站点种子URL;
d.回车或者点击“Add”。
DNS管理
图17
如图17:输入DNS服务器IP地址,回车或者点击“ok”。
代理管理
图18
如图18,输入代理IP地址和端口,回车或者点击“ok”。
友情链接
iOS Hacker 宝贝乐
转载于:https://www.cnblogs.com/lexus/archive/2013/02/25/2932011.html