All Versions
12
Latest Version
Avg Release Cycle
136 days
Latest Release
1583 days ago

Changelog History
Page 1

  • v1.3.3 Changes

    December 18, 2019

    免责声明

  • v1.3.2 Changes

    August 08, 2019
    • 💅 style: Add go.mod and update vendor
  • v1.3.1 Changes

    March 05, 2019

    ⚡️ chore: update proxy
    ⚡️ chore: optimize UI
    ⚡️ chore: update phantomjs downloader
    🛠 fix: fix panic on windows 32
    💅 style: optimize code

  • v1.3.0 Changes

    March 14, 2018

    Spider

    1. Add spider common functions
    2. Fix too many open files bug
    3. Fix spider timer

    Downloader

    ⚡️ 1. Update surfer package ⚡️ 2. Update PhantomJs Downloader Engine

    1. Add DNS cache, disable keepalive

    Output

    1. Simplify data output module.
    2. Mysql: limit 100 per insert
    3. Kafka: compatible with Kafka v0.11.0.0
    4. MongoDB: if mongoDB died or restart, app will get stuck in endless loop, imporve related logic

    Proxy

    👍 1. Support for filling in user name and password

    🌐 Web operation interface

    ⚡️ 1. Optimize websocket log

    1. Single mode: 🌲 3. Fix log blocking bug

    Cmd operation interface

    1. Supports '-c_spider=*'' that meanning all spiders

    Other

    1. Add panic trace info
    2. Fix some bugs ⚡️ 3. Optimize codes
  • v1.2.0 Changes

    September 25, 2016

    Pholcus发布1.2版本,占用资源更少,运行更稳定

    一、输出功能升级

    添加kafka数据库输出
    基本重新了mysql输出模块,提升输出稳定性与输出效率
    增加输出文件目录的配置项
    大量优化结果收集模块,提升I/O性能与状态控制性

    1. 移除文件输出目录的日期后缀
      调整文件名哈希临界长度为>8
      移除数据输出通道容量的配置项DATA_CHAN_CAP,由分批输出用户设置项直接决定

    二、下载功能升级

    增强自动转码功能
    当响应头未指定编码类型时,从请求头读取
    都未指定编码类型或编码类型为utf8时,不做转码,节约内存
    增加支持自动解压缩deflate和zlib编码的响应流
    升级surfer下载器,修复POST提交时下载内核中Content-Type被覆盖的bug,修复Request.GetHeader()==nil时panic的bug
    修复输出图片等文件时,下载补全的bug
    Context.text字段类型由string改为[]byte
    将HTTP状态码大于等于400的请求自动标记为下载失败

    三、采集规则模块升级

    0️⃣ 更新_Request.GetTemp(key string, defaultValue interface{}) interface{},defaultValue不再作为结果接收容器,当键值对不存在时,返回值为参数defaultValue。
    Spider.Register()方法改为接受Spider类型(之前为_Spider),推荐使用 "func init(){Spider{}.Register()}" 的方式进行声明
    优化任务停止条件,Spider.Root退出之前,任务不可终止
    修复动态规则解析bug
    同名采集规则的名称自动添加加"(2)"形式的序号后缀
    优化crawl采集引擎的随机停顿逻辑
    🌲 添加 Context.Log() 日志打印接口

    四、其他优化

    修复某些情况下在非win系统中log日志引发的panic
    修复web版启动时偶然性打不开页面的bug
    web版实时日志在超过2000条时自定清除前1000条
    ⏱ 优化scheduler调度器
    调整分布式模块字面量命名
    修复CUP占用高的问题,采集过程的最低使用率从 20% 降低到 1%
    加快任务的主动终止,基本已将延时控制在秒级
    通过数据输出速率来抑制采集下载速率,从而降低不必要的内存占用

  • v1.0.0 Changes

    June 17, 2016

    一、输出模块

    0️⃣ 1. 支持规则中设置Spider.NotDefaultField=true来禁止输出系统默认添加的字段 Url、ParentUrl 和 DownloadTime;

    1. 减少mysql的表创建操作;
    2. 修复mysql表名和字段内容在某些情况下会出现乱码的现象; 🐧 4. 修复Linux下,文件创建权限问题;
    3. 修复输出文件的路径以""分割时,目录创建失效的bug;
    4. 修复Output()方法指定ruleName无效的bug;
    5. 直接下载文件时,在日志中打印文件大小。

    二、内存优化

    1. DateCell、FileCell、Context均增加Pool,减少对象创建;
    2. 每2分钟检查一次可重用内存,若大于50M,则手动释放一次内存;
    3. 简化结果数据转储流程,一定程度降低内存消耗。

    三、动态规则

    1. 修复解析多个动态规则时的闭包问题;
    2. 修复动态规则中设置Header无效的bug。

    四、日志模块
    🌲 在配置文件中增加[log]段落参数:

    1. level -> 全局日志打印级别(亦是日志文件输出级别);
    2. consolelevel -> 日志在控制台的显示级别;
    3. feedbacklevel -> 客户端反馈至服务端的日志级别;
    4. lineinfo -> 日志是否打印行信息;
    5. save -> 是否保存所有日志到本地文件。

    五、配置模块

    1. 配置文件中段落与配置项分别按字母排序;
    2. 配置文件中 mysqlmaxallowedpacket -> mysqlmaxallowedpacketmb,单位为MB; 👍 3. mysql增加max_allowed_packet的配置;
    3. 增加conngcsecond配置,支持自主设定mgo连接池GC时间。

    六、操作界面

    1. cmd版的服务端模式支持连续添加任务‘
    2. 修复web版长时间运行,因意外丢失cookie而可能引发panic的问题‘
    3. 修复web版大量日志输出时“send on closed channel“的bug。

    七、其他

    1. 增加对支持gzip的页面进行自动解码的功能; 🆓 2. 修复CrawlPool.Use()与CrawlPool.Free()的写竞争;
    2. 调整运行依赖目录;
    3. 升级surfer下载器。
  • v0.8.5 Changes

    March 23, 2016

    一、命令行相关功能升级

    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 Changes

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

    January 19, 2016

    一、初步支持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 Changes

    December 17, 2015

    一、新增全局代理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 参数指定操作界面。