转换器

搜索位置(BaiduLocation)

通过百度API获取当前地标的经纬度坐标,需要拖入代表地名的列 在Hawk 3之后的版本,需要在百度地图API中注册账户,并将token填入配置中,参考:

http://lbsyun.baidu.com/index.php?title=webapi

所属地市(Region):

  • 类型:String 默认值:北京
  • 通过城市名称进行信息检索

标签(Tag):

  • 类型:String
  • 如医院,美食等

获取IP的坐标(GetIPLocation)

获取某一ip地址的经纬度坐标


获取路径信息(GetRoute)

从当前地名,运动到对应坐标所需的时间

目标位置(Dest):

  • 类型:String
  • 通过城市名称进行信息检索

源城市(SourceCity):

  • 类型:String 默认值:北京
  • 通过城市名称进行信息检索

目标城市(DestCity):

  • 类型:String 默认值:北京
  • 通过城市名称进行信息检索

运动方案(ModeSelector):

  • 类型:string选项 默认值:公交
  • 没有描述

检索附近(NearbySearch)

获取当前经纬度某一半径范围内的所有地物,需要拖入的为代表经度的列

查询地物,如医院,商场等(Query):

  • 类型:String
  • 如公园,车站等

纬度列(Lng):

  • 类型:String 默认值:pos_lng
  • 代表纬度所在的列

搜索半径(Radius):

  • 类型:Int32 默认值:2000
  • 没有描述

所有结果(AllResult):

  • 类型:Boolean 默认值:False
  • 没有描述

自然语言处理(NlpTF)

通过语言云获取的NlpTF功能,包括分词,词性标注,主题提取等

ResultType(ResultType):

  • 类型:ContentType 默认值:Text
  • 没有描述

Pattern(Pattern):

  • 类型:Pattern 默认值:分词
  • 没有描述

语言翻译转换(TransTF)

从当前语言翻译为目标语言(调用百度API)

应用中心账号(ClientID):

  • 类型:String
  • 没有描述

key(Key):

  • 类型:String
  • 没有描述

Source(Source):

  • 类型:string选项 默认值:自动检测
  • 没有描述

Target(Target):

  • 类型:string选项 默认值:自动检测
  • 没有描述

添加新列(AddNewTF)

为数据集添加新的列,值为某固定值

生成值(NewValue):

  • 类型:String
  • 没有描述

自增键生成(AutoIndexTF)

自动生成一个从起始索引开始的自增新列

起始索引(StartIndex):

  • 类型:Int32 默认值:0
  • 没有描述

列名修改器(RenameTF)

对列名进行修改,常用

拖入的列是要修改的列,填写输出列后,原始列被删除,内容转移到新列上

除了手工拖入模块,也可直接在数据清洗列上的文本框中直接修改列名,按回撤提交,可达到同样效果。


删除该列(DeleteTF)

删除所在列的内容

删除之后,在该列的内容和所有工具就不再可见。要想修改可以在数据清洗界面左侧的模块列表里选择,修改和删除。


数据库匹配(JoinDBTF)

用于完成与数据库的join操作和匹配,目前测试不完善

查询多数据(IsMutliDatas):

  • 类型:Boolean 默认值:False
  • 启用该项时,会查询多个满足条件的项,同时将同一列保存为数组

匹配方式(SearchStrategy):

  • 类型:DBSearchStrategy 默认值:Contains
  • 字符串匹配,如like,contains等,符合sql标准语法

表主键(KeyName):

  • 类型:String
  • 字符串匹配,如like,contains等,符合sql标准语法

重复当前值(RepeatTF)

对当前行进行重复性生成

重复模式(RepeatType):

  • 类型:RepeatType 默认值:OneRepeat
  • 没有描述

重复次数(RepeatCount):

  • 类型:String 默认值:1
  • 没有描述

获取请求响应(ResponseTF)

使用 网页采集器 获取网页数据,得到响应字段的值并添加到对应的属性中

爬虫选择(CrawlerSelector):

  • 类型:可编辑选项
  • 填写采集器或模块的名称

响应头(HeaderFilter):

  • 类型:String
  • 要获取的响应头的名称,多个之间用空格分割,不区分大小写

重试补数据(SupplierTF)

尝试对已有错误日志重跑补数据,错误日志需包含错误所在的任务名和模块名

使用原执行器(InnerExecute):

  • 类型:Boolean 默认值:False
  • 没有描述

时间转字符串(Time2StrTF)

将时间转换为特定格式的字符串

转换格式(Format):

  • 类型:String 默认值:yyyy-MM-dd
  • 没有描述

URL字符转义(UrlTF)

对超链接url生成URL编码后的字符串,用以进行远程访问

转换选项(ConvertType):

  • 类型:ConvertType 默认值:Decode
  • 没有描述

HTML字符转义(HtmlTF)

删除HTML标签和转义符号

当页面包含HTML时,一些字符可能已经被转义了,例如空格成了nsbp%。拖入到对应的列,即可将转义符号恢复为之前的表示

注意:

  • Hawk的Web访问器比python更加智能,默认对带特殊符号和中文的URL进行编码,所以这个模块用的并不多。

转换选项(ConvertType):

  • 类型:ConvertType 默认值:Decode
  • 没有描述

正则分割(RegexSplitTF)

使用正则表达式分割字符串

倒序(FromBack):

  • 类型:Boolean 默认值:False
  • 勾选此项后,选择从后数的第n项

工作模式(IsManyData):

  • 类型:ScriptWorkMode 默认值:One *

多文档

生成多条数据(文档)

单文档

单文档

不进行转换

匹配编号(Index):

  • 类型:Int32 默认值:0
  • 当值小于0时,可同时匹配多个值

表达式(Script):

  • 类型:String
  • 没有描述

合并多列(MergeTF)

该模块可以将多个列合并成一个列

常见的如将page合并到url中,也可以通过文件名,合并出要保存的文件的位置,是使用次数最多的模块。

它的操作非常灵活,例如格式为: format= {0}+{1}+{2} , 其他列为B C,则代表将输入列,B列和C列的内容直接拼接。

  • {0}:输入列,
  • {1}其他列中的第0项,{1}代表第1项
  • [a]:A列中的内容
  • {config} : 工程全局配置中键为config的值

总结来说: 方括号代表从本行的其他列,大括号可从全局配置中读取内容 若全局配置或数据中不包含对应的内容,则该列自动为空

其他项(MergeWith):

  • 类型:String
  • 写入多个列名,中间使用空格分割,若合并输入列,则可以为空

格式(Format):

  • 类型:String
  • 形如'http:\{0}:{1},{2}...' - 输入列的序号为0, - 之后的1,2分别代表【其他项】的第0和第1个值

参考格式(ReferFormat):

  • 类型:string选项
  • 为了方便用户,下拉菜单中提供了已有 网页采集器 配置的url,可修改后使用

Python转换器(PythonTF)

执行特定的python代码或脚本,最后一行需要为值类型,作为该列的返回值 例如,有两列a和b, 要将它们按字符串相加:

a+b 若希望按数值类型相加, 则需要提前将其转换

float(a)+float(b) 也可以提前定义函数:

def add(x,y):
return float(x)+float(y)
add(a,b)

也可以使用lambda:

f= lambda a,b: a+b
f(a,b)

注意:

  1. 你可以在文本框中定义函数,但不建议太过复杂
  2. 很难引入第三方库,这受限于C#使用的ironpython(一个C#和Python交互的模块)的功能, Hawk3中引入了调用第三方库的功能,通过编写库路径,从而能够在脚本中import库,但功能支持并不好。
  3. 不论操作如何,脚本的最后一行需要是个可求值的元素,传递给对应的列,比如
  4. return a #这是错误的
  5. a+b 正确,可求值
  6. lambda x:x+1 你确定要返回一个函数或lambda?肯定也是不对的
  7. Hawk并不预定义每个列具体的类型,因此需要在Python代码中对其进行类型和是否为空的判断。

工作模式(ScriptWorkMode):

  • 类型:ScriptWorkMode 默认值:NoTransform *

多文档

生成多条数据(文档)

单文档

单文档

不进行转换

执行脚本(Script):

  • 类型:String 默认值:value
  • 没有描述

Python库路径(LibraryPath):

  • 类型:String
  • 若需要引用第三方Python库,则可指定库的路径,一行一条

正则替换(ReReplaceTF)

通过正则表达式替换数值

替换为(ReplaceText):

  • 类型:String
  • 没有描述

工作模式(IsManyData):

  • 类型:ScriptWorkMode 默认值:One *

多文档

生成多条数据(文档)

单文档

单文档

不进行转换

匹配编号(Index):

  • 类型:Int32 默认值:0
  • 当值小于0时,可同时匹配多个值

表达式(Script):

  • 类型:String
  • 没有描述

正则转换器(RegexTF)

通过正则表达式提取内容, 可匹配一个和多个内容 设置匹配编号为正数n时,它可将第n个匹配结果转换到新列上。如果不填写新列名,则内容直接覆盖原始列。 输入负数n时,则会返回倒数第n个内容。如果没有发现匹配,则返回空

工作模式(IsManyData):

  • 类型:ScriptWorkMode 默认值:One *

多文档

生成多条数据(文档)

单文档

单文档

不进行转换

匹配编号(Index):

  • 类型:Int32 默认值:0
  • 当值小于0时,可同时匹配多个值

表达式(Script):

  • 类型:String
  • 没有描述

提取数字(NumberTF)

提取当前列中出现的数值

它是正则转换器的特例,它能够提取浮点或整数,也能包含正负数

工作模式(IsManyData):

  • 类型:ScriptWorkMode 默认值:One *

多文档

生成多条数据(文档)

单文档

单文档

不进行转换

匹配编号(Index):

  • 类型:Int32 默认值:0
  • 当值小于0时,可同时匹配多个值

表达式(Script):

  • 类型:String 默认值:(-?\d+)(.\d+)?
  • 没有描述

字符首尾抽取(StrExtractTF)

提取字符串中,从首串到尾串中间的文本内容

当文本为CABD时,需要获取B,而B非常长,写正则表达式提取有很大困难时,可以使用本模块。此时,首串填写A,尾串填写D,则Hawk就能将B提取出来。如果勾选包含首尾字符,则输出ABD,否则只有B。注意:

  • 建议A和D在文本中是唯一的,否则抽取出来的B可能并不是你想要的。
  • 该工具特别适合在抽取网页的某一特定内容时使用.

首串(Former):

  • 类型:String
  • 没有描述

尾串(End):

  • 类型:String
  • 没有描述

包含首尾串(HaveStartEnd):

  • 类型:Boolean 默认值:False
  • 返回的结果里是否包含首串和尾串

启动并行(ToListTF)

可设置任务并行方式和参数

该模块在执行时,会切分本模块前后的数据流,以前侧的数据为种子,后侧的任务为mapper执行.

子线程名称和子线程数量,都支持直接写值,或使用方括号表达式来获取别的列的内容。

例如,如果你确定每个子任务都会获取100条数据,就可以在子线程数量中填写100,之后当该任务获取了50个元素时,进度条正好处在50%的位置。如果有一列名为“小区名”, 则可以在子线程名称栏目中填写[小区名] ,Hawk就会把小区名列中的内容作为子任务的名称。

注意:

  1. 该转换器在调试和串行执行模式不起任何作用,仅仅作为一个标志
  2. 它能够在并行模式下,给执行引擎一个并行分叉的标志。

子线程数量(MountColumn):

  • 类型:String
  • 每个子线程将要获取的数量,用于显示进度条,可不填

分组并行数量(GroupMount):

  • 类型:Int32 默认值:1
  • 将多个种子合并为一个任务执行,这对于小型种子任务可有效提升效率

显示独立任务(DisplayProgress):

  • 类型:Boolean 默认值:True
  • 是否将每个子线程插入到任务队列中,从而显示进度

清除空白符(TrimTF)

清除字符串前后和中间的空白符 默认能去掉文本前后的空白字符,也可以通过勾选内部选项,清除文本中间的空白符 注意:

  • 使用正则替换也能实现类似的要求,只是本模块会更简单。

清除中间空格(ReplaceBlank):

  • 类型:Boolean 默认值:False
  • 没有描述

空白符替换为空格(ReplaceInnerBlank):

  • 类型:Boolean 默认值:True
  • 没有描述

路径是否存在(FileExistFT)

判断某一个文件是否已经在指定路径上


重复项合并(MergeRepeatTF)

对重复的数据行,进行合并操作

延迟输出(IsLazyLinq):

  • 类型:Boolean 默认值:False
  • 不勾选此选项使用枚举式迭代,需保证在本模块之后没有其他操作,否则请勾选该选项

合并到集合的属性(CollectionColumns):

  • 类型:String
  • 填入空格分割的列名,对本模块所在列的值相同的所有属性分别进行纵向合并数组

求和属性(SumColumns):

  • 类型:String
  • 可填入空格分割的多个列名 对本模块所在列的值相同的所有属性,分别进行按列求和

矩阵转置(DictTF)

将列数据转换为行数据,拖入的列为key


子任务-转换(EtlTF)

调用所选的子任务作为转换器,有关子任务,请参考相关文档

递归到下列(IsCycle):

  • 类型:Boolean 默认值:False
  • 没有描述

工作模式(IsManyData):

  • 类型:ScriptWorkMode 默认值:List *

多文档

生成多条数据(文档)

单文档

单文档

不进行转换

子任务-选择(ETLSelector):

  • 类型:可编辑选项
  • 输入或选择调用的子任务的名称

调用范围(ETLRange):

  • 类型:String
  • 设定调用子任务的模块范围,例如2:30表示被调用任务的第2个到第30个子模块将会启用,其他模块忽略,2:-1表示从第2个到倒数第二个启用,符合python的slice语法,为空则默认全部调用

属性映射(MappingSet):

  • 类型:String
  • 源属性:目标属性列 多个映射中间用空格分割,例如A:B C:D, 表示主任务中的A,B属性列会以C,D的名称传递到子任务中

XPath转换器(XPathTF)

通过XPath或CSS选取html中的子节点文档

当输入的单元格内容为html文档,而又想提取其部分数据,用 网页采集器 又杀鸡用牛刀,则可以考虑使用它。

XPath

关于XPath语法,可参考教程

XPath可以非常灵活,例如:

  • bookstore 选取 bookstore 元素的所有子节点。
  • /bookstore 选取根元素 bookstore。注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!
  • bookstore/book 选取属于 bookstore 的子元素的所有 book 元素。
  • //book 选取所有 book 子元素,而不管它们在文档中的位置。
  • bookstore//book 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。
  • //@lang 选取名为 lang 的所有属性。
  • //@src 可匹配所有src标签
  • //title[@lang] 选取所有拥有名为 lang 的属性的 title 元素 还可以通过|对多个表达式进行混合,Hawk支持了完整的XPath语法,因此不论是网页采集器以及数据清洗的XPath转换器,都能极其灵活地实现各种需求。

CSSSelector

多数情况下,使用XPath就能解决问题,但是CSSSelector更简洁,且鲁棒性更强。关于它的介绍,可参考教程 当然,大部分情况不需要那么复杂,只要记住以下几点:

  • .name 获取所有id为name的元素
  • #name 获取所有class为name的元素
  • p 获取所有p元素
  • ul > li 获取所有父节点是ul的li元素

路径(XPath):

  • 类型:String
  • 没有描述

工作模式(IsManyData):

  • 类型:ScriptWorkMode 默认值:One *

多文档

生成多条数据(文档)

单文档

单文档

不进行转换

获取正文(GetText):

  • 类型:Boolean 默认值:False
  • 勾选此项后,会智能提取新闻正文,XPath路径可为空

选择器(SelectorFormat):

  • 类型:SelectorFormat 默认值:XPath *

抓取目标(CrawlType):

  • 类型:CrawlType 默认值:InnerText *

门类枚举(XPathTF2)

要拖入HTML文本列,可将页面中的门类,用Cross模式组合起来,适合于爬虫无法抓取全部页面,但可以按分类抓取的情况。需调用 网页采集器 ,具体参考文档-XPathTF2

爬虫选择(CrawlerSelector):

  • 类型:可编辑选项
  • 填写采集器或模块的名称

字符串分割(SplitTF)

通过字符分割字符串

按字符直接分割(ShouldSplitChars):

  • 类型:Boolean 默认值:False
  • 将原文本每个字符直接分割开

空格分割(SplitPause):

  • 类型:Boolean 默认值:False
  • 没有描述

匹配编号(Index):

  • 类型:String 默认值:0 *
  • 若想获取分割后的第0个元素,则填入0,获取倒数第一个元素,则填入-1
  • 可输入多个匹配编号,中间以空格分割,
  • 【输出列】也需要与之一对应

分割字符(SplitChar):

  • 类型:String
  • 多个分隔符用空格分割,换行符用\t,制表符用\t