Skip to content

Tags: dragonlin/pholcus

Tags

v1.3.0

Toggle v1.3.0's commit message
Update doc

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. 数据库连接池增加空闲连接定时回收