美文网首页Hawk教程-简书版
Hawk教程- 主要组件介绍

Hawk教程- 主要组件介绍

作者: desert2017 | 来源:发表于2019-06-08 09:43 被阅读0次

    主要组件介绍

    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/

    相关文章

      网友评论

        本文标题:Hawk教程- 主要组件介绍

        本文链接:https://www.haomeiwen.com/subject/hmavxctx.html