# 主要组件介绍

1.Hawk的关键概念

  • 任务: 系统仅仅提供了两种任务: 网页采集器 和数据清洗,任务可以被新建,保存和加载。
  • 模块: 一个任务会包含多个模块,例如数据清洗中会有从文本生成,从爬虫转换
  • 工程: 多个任务组成一个工程,工程可以以xml方式保存和加载
  • 数据表: 在内存中存储的数据表,速度快,但是容量有限,存储小型数据时使用
  • 数据库(连接器): Hawk通过连接器连接不同的数据库,如MongoDB,sqlite等。
  • 列: 数据清洗里的列,可参考像Excel里的列,在 网页采集器 里,一个属性对应一个列
  • 文档: 可理解为数据清洗里的一行,它是键值对构成的字典,如key1:value,key2:value2
  • 单元格 : 文档中的一个单元格,就像Excel 那样
  • 流: 多个文档的序列,可能是有限或无穷的,在早期版本的Hawk中,这个概念大量使用。
  • 线程: 任务在启动时,会有一个(串行)或多个(并行)线程,可以在工作线程中对其进行暂停和删除。

目前系统仅仅提供了两个任务: 网页采集器和数据清洗, 双击即可加载一个新的模块。

[站外图片上传中...(image-e3c6e3-1540026541143)]

之前配置好的模块,可以保存为任务, 双击或点击右键可加载一个已有任务:

[站外图片上传中...(image-a0f8ce-1540026541143)]

2.线程管理

不论是调试还是执行模式,系统都会在任务管理视图中增加一个或多个线程。
你可以勾选,或取消勾选部分或全部线程,暂停或取消它们。当网站限制抓取时,可以暂停所有线程,等恢复后再次执行。

注意:

  1. 当工作流有误时(比如该列所有数据都空,却在该列添加了 空对象过滤器,那么所有数据都会被过滤)可能不会产生任何数据输出。此时进度条并不会向前推进,产生卡死的假象。此时可强行将其删除
  2. 线程删除的流程是:先安全将其取消,如果线程无响应,则会直接将其杀死

3.Hawk任务市场

为了方便用户间共享高质量的工程,形成良好的社区环境,在Hawk5中提供了市场功能。
//TODO

4.调试系统

除了在调试模式下进行操作之外,Hawk还提供了丰富的工具来确定错误的位置。

4.1.调试与探查窗口

//TODO
调试探查窗口可以方便地展示每个模块的输入量,输出量,因空而跳过的数量,一目了然

4.2.系统级窗口

如何了解总的http请求次数和错误数?在 系统设置-> http请求详情里,详细地给出了请求数,被禁止数,因错误而跳过等数量。 点击 清空数据,即可将计数器置0.

4.3.确定模块的输入和输出

在单步调试模式时,该模块输入的列,会在数据清洗的最上方用蓝色表示,输出列会用绿色表示。

5.日志功能

Hawk包含了几类日志功能, 使用log4net作为日志系统,分为INFO, DEBUG, ERROR, FATAL ,WARNING五种等级。

  • 在线界面日志:在UI的最下方,但是只能显示本次启动日志,同时不能太多,否则会有性能问题
  • 日志文件, log.dat, 本质还是文本文件,可使用记事本打开,超过10M则会创建新文件。
  • 弹出对话框: 右上角会有弹出式浮窗。可通过 系统设置 中进行设置

如何改变日志的级别? 当发现现有日志太多或太少,可以在主菜单-> 调试-> 日志级别 设置

6.多国语言

Hawk5支持了多国语言引擎,会根据操作系统语言自动切换显示的语言。 目前支持的语言包括;

  • 中文(zh_CH)
  • English (en_US)

还可以手工设置语言, 在 系统设置语言中切换,下一次启动时,会按上一次设置保存的语言显示。

Hawk凭借WPF的强大功能,一定程度上支持语言热切换,但依然会出现不能全部顺利切换的情形。因此建议在设置语言后,通过重启使语言生效。

6.1.新增其他语言

如果你愿意为Hawk的国际化贡献力量。欢迎新增语言,Hawk新增语言非常简单,在程序的执行目录的Lang文件夹,以xaml格式保存了各国语言的配置文件。拷贝zh_CH.xaml, 并将其中的中文内容替换为对应语言即可。注意:

如果只是希望国际化界面部分,则只需修改不带xml:space=preserve标签部分的内容。而包含该标签的内容,基本都用于显示文档。当然我更希望你可以翻译全部内容,否则没有文档的Hawk是非常难以使用的。

7.帮助文档系统

由于Hawk的使用较为复杂,因此提供了内置的文档系统。

  • 在绝大多数的按钮和菜单上,放置鼠标超过3秒钟,就会弹出完整的介绍和帮助。
  • 所有的模块在配置时,都可以在配置后显示其使用文档,包括功能简介,参数名和对应介绍,注意事项等。
  • 点击:帮助,即可弹出全局文档系统,在文档中,支持字体放缩,关键字搜索等,方便快速定位内容。

Hawk的文档系统分为新手模式高手模式

  • 模式的切换,可以在系统配置,显示详细描述中进行切换
  • 新手模式:文档详尽,尤其是在数据清洗的模块列表中,以详细介绍的形式呈现,方便直观地了解各模块功能
  • 老手模式:文档极简,仅提供新手模式第一段的内容。

7.1.文档编写和自动生成

由于软件在不停地优化升级,会出现模块和文档不一致的问题。为了降低作者编写文档的负担,Hawk采用了自动文档生成的方式:

  • 各模块的介绍都基于C#的反射进行,当模块参数变化时可自动更新
  • 软件的文案和文档介绍自动保持同步,即使模块名称变化也不会影响。
  • 更方便的多语言: 不同的名称可方便重用

如果你希望为Hawk编写和完善文档,本节会介绍文档的生成方式。核心文档都位于软件源码路径的Doc/DefaultLanguage.xaml

其语法非常简洁:

  • 使用space=preserve来指定某个变量为多行文档。
  • 使用{{KEY_NAME}}来引用其他变量,生成文档时会自动替换
  • 过长的文档,可以在resource目录下新建YOUR_MD.md,则可以使用{{YOUR_MD}}来引用它。
  • 变量之间可以按树结构调用,但不能出现循环引用,并生成最终文档

建议修改对应的xaml文件后,通过git向主干提交merge request,这样能保证文档质量。那如何预览生成的文档效果? 执行如下命令:

pip install mkdocs
pip install lxml
sh builddoc.sh
mkdocs serve

即可在http://127.0.0.1:8000/中查看预览。

您也可以在线上访问Hawk的全部文档:

https://ferventdesert.github.io/Hawk/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 161,873评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,483评论 1 306
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,525评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,595评论 0 218
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,018评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,958评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,118评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,873评论 0 208
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,643评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,813评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,293评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,615评论 3 262
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,306评论 3 242
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,170评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,968评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,107评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,894评论 2 278

推荐阅读更多精彩内容

  • 其实下学期我就大三了啊。。。 简单介绍自己吧,大二了,某理工大学二级学院学生,会计狗一只,女娃。 说说为什么想要写...
    鸣儿小叮当阅读 214评论 1 2
  • 如何成为自由职业者?这个问题已经遇到过好几次了,但实在难以三言两语说清楚。最近一次被问到时,忽然福至心灵,想到这样...
    大胡子逸舟阅读 3,148评论 7 62
  • 17年9月,拿下小招百夫长白金,国庆想去上海体会魔都的繁华,马不停蹄的找礼宾部体验尊贵的FHR服务,精(jing)...
    Mr_Kolar阅读 332评论 0 0