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; } 网络爬虫引擎 simspider 更新至 v2.4.0下载地址