转换器
搜索位置(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)
注意:
- 你可以在文本框中定义函数,但不建议太过复杂
- 很难引入第三方库,这受限于C#使用的ironpython(一个C#和Python交互的模块)的功能, Hawk3中引入了调用第三方库的功能,通过编写库路径,从而能够在脚本中import库,但功能支持并不好。
- 不论操作如何,脚本的最后一行需要是个可求值的元素,传递给对应的列,比如
return a
#这是错误的a+b
正确,可求值lambda x:x+1
你确定要返回一个函数或lambda?肯定也是不对的- 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就会把小区名列中的内容作为子任务的名称。
注意:
- 该转换器在调试和串行执行模式不起任何作用,仅仅作为一个标志
- 它能够在并行模式下,给执行引擎一个并行分叉的标志。
子线程数量(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