Tags: coderbradlee/pholcus
Tags
v0.8.5发布 一、命令行相关功能升级 1. cmd界面版增加对服务端与客户端模式的支持; 2. 新增丰富的命令行参数,且优先级高于配置文件。 二、配置文件更新 1. 增加更多可配置项; 2. 重新规范代码,配置参数为优先级最低的默认信息。 三、Spider结构体调整 1. Keyword改为Keyin,相应操作界面中“自定义输入”改为“自定义配置”(多任务时应分别多包裹一层“<>”); 2. MaxPage字段改为Limit,相应操作界面中“最大页数”改为“采集上限”(默认限制url请求数); 3. 添加subName,用于区分多任务并发的情况; 4. 允许在规则的Root()中进行阻塞; 5. 优化动态规则加载的错误处理。 四、调度器与历史记录模块升级 1. 增强历史记录功能,历史记录与Spider实例一一对应,且与输出操作保持同步更新; 2. 修复调度器在32位系统下panic的bug。 五、输出模块优化 1. 修改mysql输出模块,支持多行批量插入,修改默认连接池容量为2048,提升输出速率与稳定性; 2. mgo的insert方法更新,内部增加分批插入控制,默认为5000条,提升写入数据库的稳定性; 3. 修复连接池捕获panic的bug。 六、其他 1. 解决某些规则的代码片段在手动终止任务后依旧默默运行的问题,减少资源消耗; 2. 解决大量任务长时间运行后手动终止操作耗时太长的问题,加快终止操作响应速度; 3. 调整运行时目录文件; 4. 将大部分依赖包合并到项目中; 5. 修复一些bug。
一、初步支持HTML风格的动态规则 二、添加配置文件,便于修改数据库配置等信息 三、重新规划软件依赖文件目录 ├─pholcus 软件 │ ├─pholcus 依赖文件目录 │ ├─pholcus.ini 配置文件 │ │ │ ├─proxy.lib 代理IP列表库 │ │ │ ├─spider.lib 动态规则目录 │ │ └─xxx.pholcus.html 动态规则文件 │ │ │ ├─logs 日志目录 │ │ │ ├─history 历史记录目录 │ │ └─└─cache 临时缓存目录 四、增强代理IP功能 五、增强状态控制功能 六、为Spider结构体添加定时器 七、增强Request结构体序列化与反序列化的可靠性 八、Web界面的外部资源文件全部打包进软件 九、更新下载器Surfer至0.9版本,性能更佳
发布v0.7.6 一、新增全局代理IP模块: 1. 通过操作界面设置更换IP的频率,实现代理IP轮询; 2. 每次更换代理IP前,会通过ping测速,选取最佳IP; 3. 支持自动跳过ping失败的ip; 4. 代理IP列表文件的路径可在config中设置。 二、新增历史记录模块: 1. 在原来的去重模块基础上进行改造升级; 2. 成功记录充当原来的去重模块的功能; 3. 失败记录用于记录下载失败的请求,下次执行该Spider规则时将会自动追加至调度器的失败列表,从而实现重新抓取; 4. 根据输出方式的设置,从对应位置读取并写入记录。 三、调度器更新: 1. 重构调度器,提高稳定性与响应速率; 2. 添加失败请求自动添加至队列的功能; 3. 添加为每个请求设置代理IP的功能; 4. 添加控制每类Spider最大请求数的功能。 四、规则模块更新: 1. 大量更新上下文Context,提升运行效率; 2. 完美支持Request的复用,节约内存且简化代码; 3. Spider添加Namespace、SubNamespace、ReqMatrix三个字段,移除proxy字段,Pausetime字段改为int64类型; 4. 支持在输出前自定义“当前链接”和“上级链接”两个字段; 5. 最大页数MaxPage默认为该类规则的最大请求数;但当其定义初始值设置为MAXPAGE,可在规则中自定义该字段的作用,如设置列表页数等; 6. 添加获取文章页正文的通用方法; 7. 其他一系列的方法变动。 五、Request结构体更新: 1. 为更好地支持Request序列化,将Temp字段改为Temp类型,内部采用JSON字符串格式存储; 2. GetTemp()interface{}改为GetTemp(key string, receive ...interface{})interface{},其中第二个参数receive在value值不为string类型时不可省略,且receive为指针或引用类型时,可从receive中直接获取value; 3. 添加Copy()方法,返回Request副本。 六、Response结构体更新: 1. 移除Response的temp字段。 七、日志打印模块更新: 1. 美化日志的打印格式; 2. 耗时统计改用类似”1h2m3s“的格式; 3. 错误日志添加当前URL信息。 八、下载器更新: 1. 全面优化Surfer下载器,并合并入项目主目录; 2. 解决下载失败后panic的bug。 九、输出模块: 1. 文件输出支持自定义子目录。 十、操作界面更新: 1. 将两个暂停时长的设置合并为”暂停时长参考“; 2. 添加“代理IP更换频率”设置; 3. 移除去重相关的设置,并添加“继承并保存成功记录”和“继承并保存失败记录”设置; 4. 支持运行时设置 -a_ui 参数指定操作界面。
v0.7.5 大量功能优化: 一、规则模块更新: 1. 封装Spider与Response为上下文Context,大大简化规则语法; 2. 支持从Context获取上一次Request,并可在修改后作为新请求加入队列,从而节约内存(如有依赖Request的Temp值的Output操作,则应先Output再修改Request); 3. 自动为每条未设置Referer的请求补填Referer; 4. Keyword作为命名空间时,如过长则取其hash值; 4. 更新公共方法集。 二、调度器更新: 1. 去除SrcManager接口,降低内部消耗; 2. 为每个队列增加读写锁,消除并发隐患; 4. 增加RegSpider方法,提升调度效率。 三、输出模块更新: 1. 优化加强mysql操作,并解决一个字段长度的bug; 2. 优化mongodb操作,降低内存消耗; 3. 修复数据库链接失败后panic的bug。 四、去重功能更新: 1. 样本的保存位置与输出方式保持一致(file/mongodb/mysql); 2. 每次采集时,若改变是否继承历史去重的状态,则更新去重样本; 3. 优化读写方法,提升性能。 五、Surfer下载器更新: 1. 修复surf下载内核Header赋值的bug,完美支持模拟登录、随机User-Agent等; 2. phantom下载内核,在返回的响应流中添加请求信息。 (更新方法:go get -u github.com/henrylee2cn/surfer) 六、其他更新: 1. 提高暂停/停止功能在大批量任务并发情况下的灵敏性; 2. 修复运行模式热切换的小bug,并优化了切换速度; 3. Crwal接口的内部资源计数改用原子操作,提高并发安全性; 4. 操作界面的规则列表,实现按首字母排序。
升级至v.0.7.4 1. Spider中添加Namespace func(*Spider) string与SubNamespace func(self *Spider, dataCell map[string]interface{}) string两个字段,实现自定义数据库、表单及文件的名称 2. 简化数据库配置信息 3. mongodb输出中,将采集结果字段直接作为数据存储字段,便于检索 4. 更新计时器等spider中公用方法 5. 可通过DownloaderID指定下载器,其中phantomjs下载支持请求中定义js,用法Request.Temp["__JS__"]=js编码(请更新surfer下载器) 6. AddOutFeild(key)返回索引位置 7. 增加输出统计报告的打印 8. 提高被取消的请求删除去重记录的精确度
全面升级 一、界面升级: 1. Windows下编译时自动添加图标 2. web及cmd版的命令行窗口添加软件名称 二、下载器相关升级: 1. 初步增加PhantomJS下载器,实现双下载引擎,可在请求中指定 2. 下载控制转移至Request中,从而下载更灵活 3. Request增加重定向跳转次数控制功能 4. Request可以支持无限重载 5. Request增加序列化方法 6. 下载器实例改为全局唯一 三、规则语法升级: 1. 文本结果输出方法改为Output(ruleName string, resp *context.Response, item interface{}) 2. 文件输出方法建议用FileOutput(resp *context.Response, name ...string) 3. 更改解析函数Parse(resp *context.Response, ruleName ...string),ruleName为空时调用Root函数 4. OutFeild()方法改为IndexOutFeild() 5. Spider结构体新增CreatItem(ruleName string, item map[int]interface{}) map[string]interface{},将map索引自动转换为OutFeild字段 6. Spider结构体新增代理服务器列表 6. AddQueue()接收*Request参数,UseCookie改为EnableCookie 7. 规则方法库中升级timer计时器 四、数据库操作升级: 1. 优化更新mongodb操作方法库 2. 数据库连接池增加空闲连接定时回收
PreviousNext