Hawk教程- 主要组件介绍

主要组件介绍

1.Hawk的关键概念

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

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

新建任务

上次保存的任务,重新启动后其界面不会自动打开,可在任务管理器上双击,即可自动弹出配置界面。

2.线程管理

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

工作线程

右下角分别是暂停,继续和删除任务。

task.gif

注意:

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

3.调试系统

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

3.1.调试与探查窗口

调试与探查

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

3.2.系统级窗口

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

系统设置

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

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

输入输出设置

4.日志功能

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

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

下图是典型的调试信息窗口,用不同颜色展示日志级别:

调试信息窗口

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

调试级别设置

5.多国语言

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

  • 中文(zh_CH)
  • English (en_US)

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

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

5.1.新增其他语言

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

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

6.帮助文档系统

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

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

下面的动图描述了Hawk文档的使用:

doc.gif
在按钮上自动弹出帮助

为一个数据清洗任务自动生成其step by step的教程文档(点击调试工具栏中最右侧的哭脸按钮即可)

自动生成文档

亦可在 文件->生成工程教学文档, 生成当前工程的全部文档。在初期其可读性可能不够好,之后会继续完善。

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

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

在各模块的图标上停留,即可弹出简单的使用介绍:

数据清洗可用模块列表

6.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阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容

  • 1.Hawk的关键概念 任务: 系统仅仅提供了两种任务: 网页采集器 和数据清洗,任务可以被新建,保存和加载。 ...
    desert2017阅读 453评论 0 0
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,176评论 0 9
  • GitHub文档镜像 欢迎使用Hawk 快速教程 主要组件介绍 核心功能:Hawk工程Hawk任务市场数据表和数据...
    desert2017阅读 2,479评论 0 0
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,089评论 1 32
  • 青春的我们爱情和友情都太用力,仿佛握着他的手就要一辈子,就必须一辈子。但是,大多都事与愿违, 后来才发现原来舒服就...
    槿楠木阅读 160评论 0 0