免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 59497 | 回复: 66
打印 上一主题 下一主题

分布式定向采集系统ispider发布 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-11 14:53 |只看该作者 |倒序浏览
本帖最后由 redor 于 2012-04-26 21:09 编辑

之前的采集系统hispider和hitask设计上都还是有些问题,经历这两年的实践重新设计了部分程序结构,但是总体的用户界面借口跟之前大多数兼容;
新版本起名ispider 总体纳入libibase项目 http://libibase.googlecode.com,目前发布了第一个版本:http://code.ithunder.org/ispider-0.0.2.tar.gz


已经更新版本为0.0.2,使用说明:http://s.ithunder.org/


系统简介  讯速采集系统(ispider)是一个开源的数据采集系统,开发始于2008年,早期版本属于实验版本仅仅支持数据采集功能,不能精准的抽取网页内容,在此基础上发展的分布式定向采集系统具备多节点同时采集功能,同时支持模版的方式抽取内容,大大提高系统的可用性和网络带宽利用率。基础通信库使用libsbase, 字符集识别使用libcharset(C++),核心代>码全部由纯C语言实现,采用面向对象设计思想,运行于类unix系统linux/BSD。
  采集系统模块包括:
  URL管理:用于URL排重,URL优先级任务管理,数据更新任务管理等;
  域名解析:异步域名解析用于大规模host解析;
  数据采集:实现HTTP协议的GET、POST采集;
  数据转码:对采集数据编码识别并统一转码;
  数据抽取:通过HTML抽取工具或者模版匹配方式抽取数据。
  本文采用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-i ... 120418140633.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”。





评分

参与人数 1可用积分 +10 收起 理由
prolj + 10 很强

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2009-12-11 15:11 |只看该作者
顶顶redor

论坛徽章:
0
3 [报告]
发表于 2009-12-11 15:21 |只看该作者
不错

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2009-12-11 15:49 |只看该作者
太牛叉了!
饿的神啊!

论坛徽章:
1
黑曼巴
日期:2020-02-27 22:54:26
5 [报告]
发表于 2009-12-11 16:03 |只看该作者
用了一下,很强大

论坛徽章:
0
6 [报告]
发表于 2009-12-11 16:26 |只看该作者

回复 #1 redor 的帖子

牛。

论坛徽章:
0
7 [报告]
发表于 2009-12-11 16:36 |只看该作者
LZ有没有已经在跑的server,给大家体验一下啊?懒得装了,呵呵。

论坛徽章:
0
8 [报告]
发表于 2009-12-11 16:44 |只看该作者
原帖由 cugb_cat 于 2009-12-11 16:36 发表
LZ有没有已经在跑的server,给大家体验一下啊?懒得装了,呵呵。



没有呢, 等过一段时间吧, 等我开发差不多 肯定会做一个演示版。

论坛徽章:
0
9 [报告]
发表于 2009-12-11 18:27 |只看该作者
饿地神啊,哦来晚大

论坛徽章:
0
10 [报告]
发表于 2009-12-11 19:01 |只看该作者
redor绝对的拉风男人,俺的偶像....
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP