Hawk 4. 数据清洗】的更多相关文章

数据清洗模块,包括几十个子模块, 这些子模块包含四类:生成, 转换, 过滤和执行. 数据清洗可以通过组合多个不同的子模块,生成多样的功能,通过拖拽构造出一个工作流,它能够产生一个有限或无限的文档序列.比如下面: 基本概念: ETL:即数据清洗,包含抽取(E),转换(T)和加载(L) 行,列: 在数据表格上的行列 流,子流:一个流代表一组模块构成链条,子流也是流,只不过是被别的流调用的,可以将流理解为函数 模块:构成流中的一个个的组件,分为生成,转换,过滤和执行 原列名: 一个模块的输入,如果有多…
Hawk是开源项目,因此任何人都可以为其贡献代码.作者也非常欢迎使用者能够扩展出更有用的插件. 编译 编译需要Visual Stuido,版本建议使用2015, 2010及以上没有经过测试,但应该可以编译. 需要安装.Net Framework 4.5 和.NET Framework 4.0 没有其他依赖项. 可能出现的编译问题 虽然在GitHub上是最新的代码,最新代码是可以成功编译的.但不能保证用户是否clone的是早期版本的代码,因此此处罗列可能的编译错误. 因为工程Hawk.csproj…
转换器是最为常用的一种类型,当然它的使用也是最复杂的. 转换器有三种子类型: A:单文档->单文档:例如仅将某一列的字符提取出来 B:单文档->多文档:典型的如从爬虫转换,每一行url都可能生成20个甚至更多的文档 C:多文档->单文档:很少见,需要时再进行介绍 如果你熟悉ODPS,A模式其实是UDF,B模式是UDAF. 绝大多数转换器都是A类型.但同一个转换器在不同的配置下,可能会有多种行为,例如从爬虫转换,如果选择的网页采集器为One(单文档)模式,则该转换器为A模式,若为List模…
Hawk在发布之后,收到了不少朋友的感谢和使用反馈,沙漠君表示非常开心.软件肯定有很多的问题和不足,还有很多可扩展的空间,因此我希望更多的朋友,能够参与到改进Hawk的计划中来,为开源世界作出努力. 不少朋友询问一些术语的意思,在下面解释一下: ETL:即数据清洗,包含抽取(E),转换(T)和加载(L) 行,列: 在数据表格上的行列 流,子流:一个流代表一组模块构成链条,子流也是流,只不过是被别的流调用的,可以将流理解为函数 模块:构成流中的一个个的组件,分为生成,转换,过滤和执行 合并多列:将…
本文写于圣诞节北京下午慵懒的午后.本文偏技术向,不过应该大部分人能看懂. 五年之痒 2016年,能记入个人年终总结的事情没几件,其中一个便是开源了Hawk.我花不少时间优化和推广它,得到的评价还算比较正面,因为负面评价也没什么渠道进我耳朵. 不过你知道我写这个东西花了多久吗? 掐头去尾,这是第五个年头了. 读研究生伊始,实验室开始做数据挖掘,但我发现大家做研究,都是一段段的代码,遇到新问题,就不得不再拷贝一份修改,很少想过复用.于是我便花了一年的时间,开发了一款现在看起来配色丧心病狂的"数据挖掘…
Hawk在设计之初,就是以弱schema风格定义的.没有严格的列名和列属性.用C#这样的静态强类型语言编写Hawk,其实并不方便.但弱schema让Hawk变得更灵活更强大. 因此,Hawk虽然之前支持各种数据库连接器,而目前只支持MongoDB这样的文档型数据库.之所以不支持传统SQL,是因为获取的数据可能并不满足这些SQL数据库的约束:如列的顺序,列的字段类型,是否为空...很容易导致插入失败.使用Hawk的一般不是程序员,我不想给普通人挖这样的坑. 当然,从各类SQL数据库中读入数据也是可…
并行化 Hawk支持单机并行化,也就是使用多线程获取数据.它可以控制目前所有任务的数量,为了不给网站造成过大的压力,仅当任务池中的任务数量小于一定值后,才会插入新的任务. 你可以在数据清洗的 执行面板中,选择串行和并行模式: 在调试模式下,所有获取都是串行的.而执行模式下,执行器才会执行.为了更好地理解并行化,强烈建议阅读下面的内容. 最简单的并行化 我们以抓取某个网站的100个页面为例,第一个模块生成区间数,可以生成1-100的页面,自然地,就可以创建100个任务,分别抓取了. Hawk在默认…
2. 软件界面介绍 1. 基本组件 Hawk采用类似Visual Studio和Eclipse的Dock风格,所有的组件都可以悬停和切换.包括以下核心组件: 左上角区域:主要工作区,任务管理. 下方: 输出调试信息,和任务管理,监控一项任务完成的百分比. 右上方区域: 属性管理器,能对不同的模块设置属性. 右下方区域: 显示当前已经加载的所有数据表和模块. 2. 数据源 能够添加来自不同数据源的连接器, 并对数据进行加载和管理: 在空白处,点击右键,可增加新的连接器.在连接器的数据表上,双击可查…
1.基本入门 1. 原理(建议阅读) 网页采集器的功能是获取网页中的数据(废话).通常来说,目标可能是列表(如购物车列表),或是一个页面中的固定字段(如JD某商品的价格和介绍,在页面中只有一个).因此需要设置其读取模式.传统的采集器需要编写正则表达式,但方法过分复杂. 如果认识到html是一棵树,只要找到了承载数据的节点即可.XPath就是一种在树中描述路径的语法.指定XPath,就能搜索到树中的节点. 有关XPath的详细信息,建议参考网上相关章节. 手工编写XPath也很复杂,因此软件可以通…
本文将讲解通过本软件,获取大众点评的所有美食数据,可选择任一城市,也可以很方便地修改成获取其他生活门类信息的爬虫. 本文将省略原理,一步步地介绍如何在20分钟内完成爬虫的设计,基本不需要编程,还能自动并行抓取. 看完这篇文章,你应该就能举一反三地抓取绝大多数网站的数据了.Hawk是一整套工具,它的能力取决于你的设计和思路.希望你会喜欢它. 详细过程视频可参考:http://v.qq.com/page/z/g/h/z01891n1rgh.html,值得注意的是,由于软件不断升级,因此细节和视频可能…
链家的同学请原谅我,但你们的网站做的真是不错. 1. 设计网页采集器 我们以爬取链家二手房为例,介绍网页采集器的使用.首先双击图标,加载采集器: 在最上方的地址栏中,输入要采集的目标网址,本次是http://bj.lianjia.com/ershoufang/.并点击刷新网页.此时,下方展示的是获取的html文本.原始网站页面如下: 由于软件不知道到底要获取哪些内容,因此需要手工给定几个关键字, 让Hawk搜索关键字, 并获取位置. 以上述页面为例,通过检索820万和51789(单价,每次采集时…
目标——万方医学网论文列表 http://med.wanfangdata.com.cn/Author/General/A000000001 和普通网页不一样的地方在于点击下一页的时候,URL没有发生变化,不能显眼的看到类似‘page=1’或者‘pge=1’这样的信息. 这就需要我们自己分析网络请求,笔者推荐是汉化更好点的火狐的浏览器——Firefox,右上角的打开菜单下——开发者工具——网络,在chrome浏览器中是更多工具中的开发者工具Network                     …
不少朋友反映,Hawk的手气不错,好像没法处理动态页面.其实很容易,比其他软件都容易,让我慢慢道来. 1. 什么是动态页面 很多网站,在刷新的时候会返回页面的全部内容,但实际上只需要更新一部分,这样可大大节约带宽.这种方式一般叫ajax,服务器传递xml或者json到浏览器,浏览器的js代码执行,并将这些数据渲染到页面上. 所以,真正获取数据的url,不一定是你在浏览器上看到的,而且里面会涉及到一些js调用,本质上,js启动了一些新的web请求来获取数据,只要你能模拟这些web请求(我们称之为隐…
软件在发布后,收到了各方朋友的反馈和提问.此处统一对一部分问题作出回复. 感谢你使用Hawk,软件是我写的,坑是我挖的.做爬虫本来就比较复杂,一些公司有专门的程序员做爬虫工程师.因此如果你很沮丧,很有可能是网站做了不少策略,确实很难爬.哎,这也是没有办法的事情. 闲话不说,进入正题. 1.自动嗅探失败 网页采集器具备自动嗅探功能,本质上是替换掉了底层的代理.因此,所有的请求都通过Hawk内部,自然就能根据需求筛选出所需的请求. 但有些系统中安装了类似360等工具,会拒绝这类操作.导致嗅探失败.目…
1. 主角出场:Hawk介绍 Hawk是沙漠之鹰开发的一款数据抓取和清洗工具,目前已经在Github开源.详细介绍可参考:http://www.cnblogs.com/buptzym/p/5454190.html 强烈建议先读这篇文章,该文介绍了详细原理和抓取链家二手房的攻略,以此为基础,才能较好的理解整个操作. GitHub地址:https://github.com/ferventdesert/Hawk 本文将讲解通过本软件,获取大众点评的所有美食数据,可选择任一城市,也可以很方便地修改成获取…
超级图形化爬虫Hawk已经发布两年半时间了,2015年升级到第二版,收到上千条用户反馈(tucao),100多个红包,总共666块五毛~一直想攒着这笔钱,去北境之王天通苑的龙德商场买最心爱的阿迪王! 啥,你不知道Hawk是什么?它是智能而强大的网络数据采集工具,全图形化无需编程,一些功能强大到作者自己都不会用(这是真的),下面的文章有更多的细节: 第一版: [重磅开源]Hawk-数据抓取工具:简明教程 设计Hawk背后的故事 Hawk开源地址如下,记得在全世界最大的同性交友网站上给沙漠君点个st…
沙漠君在闭关4个月后,终于把开源数据神器Hawk(详细介绍在这里)的文档和教学视频基本录制完毕, 并同步更新在有爱无广告二次元的B站! 教程总时间超过3个小时,覆盖了网页采集器,数据清洗,文件读写等方方面面.内容蜜汁丰富,有原理,有如何填坑的tip,更有完整的操作步骤,让你一看就能明白. 教程更是增加了群众喜闻乐见的手机APP数据抓取和失败重试! 同时,文档也得到了更新,不过,有了沙漠君亲自手把手录制的视频,谁还会去看文档呢哈哈哈. 视频教程可以点击"阅读原文"直达,或者在电脑端访问如…
沙漠君在历时半年,修改无数bug,更新一票新功能后,在今天隆重推出最新改进的超级爬虫Hawk 2.0! 啥?你不知道Hawk干吗用的? 这是采集数据的挖掘机,网络猎杀的重狙!半年多以前,沙漠君写了一篇小软文,推出了Hawk.关注的人超级多有木有! Github上的小星星一下子增加到400!超多妹子在沙漠君的粉丝应援团里疯狂崇拜!然而这不是重点!重点是Hawk真的好多"小"问题... 有朋友哭诉,刚启动小鹰它就冒烟了,还是烤肉味的!好不容易把小虫虫做好,碰了一下显示器,结果小虫虫就扑街了…
本页面您可以通过关键字搜索来获取信息. 理性使用爬虫 爬虫是一种灰色的应用,虽然作为Hawk的设计者,但我依然不得不这么说. 各大网站都在收集和整理数据上花费了大量的精力,因此抓取的数据应当仅仅作为科学研究使用.作者对Hawk的使用者的行为,不承担任何连带责任. 建议您理性使用爬虫,在不影响网站正常运营的情况下抓取数据.Hawk的好处是,较大地降低了爬虫的开发成本,能让普通用户也能使用.在这一理念下,我们仅仅提供最为实用的功能,而更多高级的功能则不会提供.比如代理切换和验证码识别. 在并行模式下…
子流程的定义 当流程设计的越来越复杂,越来越长时,就难以进行管理了.因此,采用模块化的设计才会更加合理.本节我们介绍子流程的原理和使用. 所谓子流程,就是能先构造出一个流程,然后被其他流程调用.被调用的流程就是子流程. 学过编程和数学的人,应该能够了解子流程其实就是函数,可以定义输入参数和输出,把整个功能看成整体,从而方便重用. 子流程能够分为: 子流-生成 如生成全国城市列表的流 生成某个网站全部分类的流 子流-转换 通过输入url地址,就能转换出该页面中所有需要信息的流 子流-执行 例如可以…
除了一般的数据库导入导出,Hawk还支持从文件导入和导出,支持的文件类型包括: Excel CSV(逗号分割文本文件) TXT (制表符分割文本文件) Json xml Excel 目前来看,Excel使用最多,但导出到Excel有严重的性能问题, 受限于NPOI库,数据在几万条之后,会越导越慢.笔者也在积极寻找解决策略. Excel本身对大数据量的支持也比较一般,在2013以上版本有所改善,早期版本在打开几万量级的表都非常慢. CSV和TXT 注意编码格式的问题,同时还一定要留意文本中本身包含…
执行器是负责将Hawk的结果传送到外部环境的工具.你可以写入数据表,数据库,甚至执行某个特定的动作,或是生成文件等等. 在调试模式下,执行器都是不工作的.这是为了避免产生副作用.否则,每刷新一遍数据,就会向数据库中写入,这显然是不可接受的. 写入数据库 不需要列名,选择所需的数据库连接器,填写表名,设置工作模式即可. 写入数据表 不需要列名,填写要插入的数据表的名称即可. 保存超链接文件 拖入的列为文件的超链接地址 保存位置:可以使用方括号表达式,将某一列的内容传递过来 这特别适合抓取网页中的图…
入门教程(1)--从URL开始 首先感谢辛苦的沙漠君 先把沙漠君的教程载过来:)可以先看一遍 Hawk-数据抓取工具:简明教程 Hawk 数据抓取工具 使用说明(二) 20分钟无编程抓取大众点评17万数据 如果你能完美写出XPath,子流模块也能很好的使用,OK你可以跳过本教程 如果不能,我们丛理解开始讲起. 不知道你有没有使用过其他爬虫,比如pyspider,phantomjs,有些爬虫的思路是通过一个模拟浏览器来模拟点击去访问目标网页, 而我对HAWK的理解是组合出目标URL,去请求网页[难…
网站日志分析项目案例(一)项目介绍:http://www.cnblogs.com/edisonchou/p/4449082.html 网站日志分析项目案例(二)数据清洗:当前页面 网站日志分析项目案例(三)统计分析:http://www.cnblogs.com/edisonchou/p/4464349.html 一.数据情况分析 1.1 数据情况回顾 该论坛数据有两部分: (1)历史数据约56GB,统计到2012-05-29.这也说明,在2012-05-29之前,日志文件都在一个文件里边,采用了…
1. 调试模式和执行模式 1.1.调试模式 系统能够通过拖拽构造工作流.在编辑流的过程中,处于调试模式,为了保证快速地计算和显示当前结果(只显示前20个数据,可在调试的采样量中修改),此时,所有执行器都不会参与到工作流中,意味着数据库和数据表都不会被写入和更新. (是否记得所有模块分为 生成,转换,过滤和执行四类?) 在调试时,从爬虫转换模块可能会请求web数据,为了提升性能,该模块对请求做了缓存.保证数据只需获取一次,如果想强制刷新数据,将从爬虫转换模块禁用,再启用,原始缓存数据就会被擦除.…
1.这是什么鬼? 哦?美女? 最近看了这一篇文章:http://cuiqingcai.com/1001.html 大概说的是用Python和Pyspider(这货好像是我的一位师兄写的,吓尿),抓取淘宝淘女郎的所有美女照片.只是里面还要敲一堆代码,还要用其他动态js运行框架,看着好不烦人啊. Hawk是沙漠君开发的一款爬虫和清洗工具,目前已经在Github开源: https://github.com/ferventdesert/Hawk 最近沙漠君很开心啊,开发的Hawk在GitHub上上百个s…
使用pandas进行数据清洗 本文转载自:蓝鲸的网站分析笔记 原文链接:使用python进行数据清洗 目录: 数据表中的重复值 duplicated() drop_duplicated() 数据表中的空值/缺失值 isnull()&notnull() dropna() fillna() 数据间的空格 查看数据中的空格 去除数据中的空格 大小写转换 数据中的异常和极端值 replace() 更改数据格式 astype() to_datetime() 数据分组 cut() 数据分列 split()…
新系统上线后,需要导入历史数据,但是旧数据格式,数据缺失,数据错误,奇异值,属性归类与新系统有很大的gap.因此我们需要建立一套数据动态清洗规则给Salesforce系统,通过这些规则自动清洗导入数据,清洗规则可以让function自己配置.而不需要IT负责 下面将详细举一个例子如何在salesforce中做数据处理.数据清洗需要分成5个步骤 1,建立2个关联数据的Object的和 一个数据清洗后台设置的Object的 2,数据导入页面csv 3,定义每个字段的范围.属性,如果是错误的则自动重新…
简介     OLTP系统的后端关系数据库用于存储不同种类的数据,理论上来讲,数据库中每一列的值都有其所代表的特定含义,数据也应该在存入数据库之前进行规范化处理,比如说"age"列,用于存储人的年龄,设置的数据类型为INT类型.存入数据库的值是2000虽然看起来没有任何问题,但结合业务规则,这样的"Noisy"数据在数据分析过程中就会造成数据分析的结果严重失真,比如极大的拉高平均年龄.在真实的OLTP系统中,这类不该存在的数据往往会由于各种各样的原因大量存在,类似这…
1.数据错误: 错误类型– 脏数据或错误数据• 比如, Age = -2003– 数据不正确• '0' 代表真实的0,还是代表缺失– 数据不一致• 比如收入单位是万元,利润单位是元,或者一个单位是美元,一个是人民币– 数据重复 2.缺失值处理: 处理原则–缺失值少于20%•连续变量使用均值或中位数填补•分类变量不需要填补,单算一类即可,或者用众数填补–缺失值在20%-80%•填补方法同上•另外每个有缺失值的变量生成一个指示哑变量,参与后续的建模–缺失值在大于80%•每个有缺失值的变量生成一个指示…