Skip to content

Tags: x-Fierce/pholcus

Tags

v1.2.0

Toggle v1.2.0's commit message
update doc

v1.0.0

Toggle v1.0.0's commit message
标记v1.0.0稳定版

v0.8.5

Toggle v0.8.5's commit message
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。

v0.8.2

Toggle v0.8.2's commit message
v.0.8.2

1. 移除Response;
2. 重构Context,同时增加Context.GetCookie()方法;
3. 重构mgo与mysql输出模块,优化连接池,增加异常重连函数,提高输出性能与稳定性;
4. 优化调度器中sdl.Push()方法,降低内存占用;
5. 修复不支持freebsd系统的bug;
6. 规范全局代码;
7. 规范日志打印格式;
8. 兼容 go1.6 版本;
9. 本次v0.8.2版本通过大量代码重构与优化,减少约30%的堆栈数量。

v0.8.0

Toggle v0.8.0's commit message
一、初步支持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

Toggle v0.7.6's commit message
发布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

Toggle v0.7.5's commit message
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. 操作界面的规则列表,实现按首字母排序。

v0.7.4

Toggle v0.7.4's commit message
升级至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. 提高被取消的请求删除去重记录的精确度

v0.7.3

Toggle v0.7.3's commit message
全面升级

一、界面升级:
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. 数据库连接池增加空闲连接定时回收

v0.7.2

Toggle v0.7.2's commit message
升级至v0.7.2

1. web版支持多用户之间联动控制、状态实时同步;
2. 升级去重功能,支持file和mongodb两种样本存储方式,支持是否继承历史去重样本;
3. 规则中添加请求时支持通过设置“Duplicatable”为true,来允许重复下载该页面;
4. 美化客户端模式下的GUI界面;
5. 彻底解决规则库加载为空的问题;
6. 增加下载超时设置,支持规则及请求两个级别的控制;
7. 简化main包,更改一个参数即可指定目标编译界面;
8. 其他一些代码优化。