网络爬虫引擎 simspider 更新至 v2.4.0

calvinwilliams
 calvinwilliams
发布于 2015年03月13日
收藏 112

simspider 2.4.0  发布了,改进内容包括:
        * 新增多路复用并发数自动调整机制
        * 新增HTTP请求头自定义专用链表
        * 自动增加Referer请求头选项
        * 完善了主流程框架对事件的响应以提高性能
        * curl对象复用机制以提高性能
        * 调整了示例爬虫simspider代码

simspider - 网络爬虫引擎

1.简介

simspider是一个轻巧的跨平台的网络爬虫引擎,它提供了一组C函数接口用于快速构建你自己的网络爬虫应用,同时也提供了一个可执行的爬虫程序用于演示函数接口如何使用。
simspider只依赖于第三方函数库libcurl。

simspider目前支持平台:
* UNIX/Linux
* WINDOWS

simspider函数接口非常容易使用,主流程如下:
* 创建爬虫引擎环境
* 设置爬虫引擎环境
* 从入口网址递归爬取所有网页
* 销毁爬虫引擎环境

有大量的可选选项用于定制你的爬虫引擎环境,包含但不限于下列:
* 设置请求队列空间大小
* 设置感兴趣的文件扩展名集合
* 是否允许文件扩展名为空
* 是否允许爬出当前网站
* 设置最大递归深度
* 设置HTTPS证书文件名
* 设置爬取间隔时间
* 设置爬取最大并发数量

simspider爬虫引擎实现了一个灵活的流程框架,提供了相当丰富的回调函数指针给予爬虫应用设计者想要在爬取的任何时间点加入自己自定义的处理逻辑,包含但不限于下列:
* 构建HTTP请求头时
* 构建HTTP请求体(往往是POST内容)时
* 获取到HTTP响应头时
* 获取到HTTP响应体(往往是HTML)时
(在以上4个回调函数中,爬虫应用设计者可以使用另外一批simspider函数接口得到上层网址、当前网址、响应码、递归深度、CURL对象以及HTTP缓冲区等信息)
* 爬取完成后检阅完成队列

2.我的第一个爬虫程序

使用simspider爬虫引擎函数库实现一个爬虫应用相当容易,以下是一个简单示例:

#include "libsimspider.h"

int main()
{
    struct SimSpiderEnv    *penv = NULL ;
    int            nret = 0 ;
    
    nret = InitSimSpiderEnv( & penv , NULL ) ;
    if( nret )
    {
        printf( "InitSimSpiderEnv failed[%d]\n" , nret );
        return 1;
    }
    
    nret = SimSpiderGo( penv , "" , "http://www.curl.haxx.se/" ) ;
    if( nret )
    {
        printf( "SimSpiderGo failed[%d]\n" , nret );
        return 1;
    }
    
    CleanSimSpiderEnv( & penv );
    
    return 0;
}





本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:网络爬虫引擎 simspider 更新至 v2.4.0
加载中

最新评论(7

jingzl
jingzl
这个性能如何,有人在用吗?
calvinwilliams
calvinwilliams
Nutch是Java实现的搜索引擎。
Heritrix是Java实现的网络爬虫,但是对Windows支持不是很好。
simspider支持Windows、UNIX/Linux,内部采用多路复用,性能快,占用系统资源非常小,也可以被应用定制为多进程多线程多路复用。
更重要的是simspider实现了一个爬虫框架(基于回调函数机制),比如你可以用你的实现替换引擎内默认自带的简单的HTML链接定位器,你可以用数据库或redis等替换引擎内默认自带的请求队列(内存队列)和完成队列(字典哈希容器)的实现,你可以递归爬取中的任何时候插入你的处理逻辑如发送HTTP请求前改造URL;如处理HTTP响应体(HTML)前插入编码转换动作等等。
最后解释一下为什么用c开发:因为我只会c,不熟悉Java等高大上的语言 ^_^
Timco
Timco

引用来自“calvinwilliams”的评论

呵呵。我正在用simspider搭建大规模分布式互联网数据挖掘平台,只有c或go的性能才能满足要求,其它根本适应不了上亿数量级的挖掘效率。下一阶段改造目标:提供请求队列和完成队列钩子,允许用户重载自己的队列实现,比如结合redis来做分布式挖掘。
nutch, heritrix也满足不了你吗?0
calvinwilliams
calvinwilliams
呵呵。我正在用simspider搭建大规模分布式互联网数据挖掘平台,只有c或go的性能才能满足要求,其它根本适应不了上亿数量级的挖掘效率。下一阶段改造目标:提供请求队列和完成队列钩子,允许用户重载自己的队列实现,比如结合redis来做分布式挖掘。
进击的代码
进击的代码

引用来自“进击的代码”的评论

有没有JAVA,PHP或者C#的爬虫库推荐下呢?C和C++的有点头大.....

引用来自“eechen”的评论

PHP: Simple-HTML-DOM
http://simplehtmldom.sourceforge.net/manual.htm

Java: jsoup
http://jsoup.org/
赞,两个都正在研究
eechen
eechen

引用来自“进击的代码”的评论

有没有JAVA,PHP或者C#的爬虫库推荐下呢?C和C++的有点头大.....
PHP: Simple-HTML-DOM
http://simplehtmldom.sourceforge.net/manual.htm

Java: jsoup
http://jsoup.org/
进击的代码
进击的代码
有没有JAVA,PHP或者C#的爬虫库推荐下呢?C和C++的有点头大.....
返回顶部
顶部