Hawk在设计之初,就是以弱schema风格定义的。没有严格的列名和列属性。用C#这样的静态强类型语言编写Hawk,其实并不方便。但弱schema让Hawk变得更灵活更强大。

因此,Hawk虽然之前支持各种数据库连接器,而目前只支持MongoDB这样的文档型数据库。之所以不支持传统SQL,是因为获取的数据可能并不满足这些SQL数据库的约束:如列的顺序,列的字段类型,是否为空...很容易导致插入失败。使用Hawk的一般不是程序员,我不想给普通人挖这样的坑。

当然,从各类SQL数据库中读入数据也是可以的,但既然没有提供写入,我们也就索性不提供读入了。需要的话,你可以自己扩展其他数据库连接器。

不过,简单的才是最好的,以作者的经验,使用MongoDB这样的数据库来应对爬虫已经足够了:不需事先建表,高性能,低成本,低维护。我们也不可能一次性就把数据规约成你想要的形式,之后完全可以用其他工具和代码,再将MongoDB的数据导出来,写入到目标数据库。

安装MongoDB

已经安装过的可以自行跳过。

可以从这里下载笔者已经打包好的安装包,之后解压后,在bat脚本上点击右键,以管理员模式执行,就会默认安装到D盘上并启动服务,非常方便。

MongoDB本身包含32位和64位两种版本,前者只支持最大2GB的数据集合。但32位能装在64位系统上,反过来就不成。因此提供的安装包是32位版本的。如果想装64位,可以参考网络上其他教程。

安装之后,可以在任务管理器的服务上,检查是否已经包含了正在运行的MongoDB服务。

如何为Hawk添加连接器

数据视图的右侧,包含了目前所有的连接器。

在空白位置点右键,即可选择插入一个MongoDB连接器,在服务器地址,用户名和密码,数据库名称上填写所需的字段,然后点击连接数据库即可。

如果你是小白用户,用上面的方法安装了MongoDB,则数据库地址填写127.0.0.1(代表本地),用户名和密码为空,数据库名称填写你想要的任何名字皆可。
这样我们就可以用Hawk将数据写入数据库啦!

如何读取数据库

两种方式

事先导入数据管理器

添加连接器后,可以在下拉菜单中看到当前数据库中包含的所有表,在表上点右键,可选择

  • 【查看数据】:查看内容,并不导入到内存中
  • 【导入全部数据】:将表内容全部导入到内存中,表格巨大时慎用!
  • 【执行查询】,此时会弹出对话框,可在对话框中输入Mongo支持的js语法,即可执行查询并导入到内存中。本功能没有经过详细测试,慎用。

之后,可以利用数据清洗,对这些数据进行后处理或导出。

在数据清洗中动态导入

可选择从数据库生成,此时每次刷新时,系统都会从数据库内实时地获取数据,整个流不会将数据全部导入到内存中。

两种方法可以按需求选用,对第一种方法,每次刷新时性能很高,因为数据已经在内存中了,但如果表大则是灾难;对第二种,不论表多大都没有关系,但刷新时每次都要请求数据库,因此性能相对较差。

如何写入数据库

参考执行器的相关章节

Hawk 5. 数据库系统的更多相关文章

  1. 设计爬虫Hawk背后的故事

    本文写于圣诞节北京下午慵懒的午后.本文偏技术向,不过应该大部分人能看懂. 五年之痒 2016年,能记入个人年终总结的事情没几件,其中一个便是开源了Hawk.我花不少时间优化和推广它,得到的评价还算比较 ...

  2. 120项改进:开源超级爬虫Hawk 2.0 重磅发布!

    沙漠君在历时半年,修改无数bug,更新一票新功能后,在今天隆重推出最新改进的超级爬虫Hawk 2.0! 啥?你不知道Hawk干吗用的? 这是采集数据的挖掘机,网络猎杀的重狙!半年多以前,沙漠君写了一篇 ...

  3. Hawk 7. 常见问题

    本页面您可以通过关键字搜索来获取信息. 理性使用爬虫 爬虫是一种灰色的应用,虽然作为Hawk的设计者,但我依然不得不这么说. 各大网站都在收集和整理数据上花费了大量的精力,因此抓取的数据应当仅仅作为科 ...

  4. Hawk 6. 编译和扩展开发

    Hawk是开源项目,因此任何人都可以为其贡献代码.作者也非常欢迎使用者能够扩展出更有用的插件. 编译 编译需要Visual Stuido,版本建议使用2015, 2010及以上没有经过测试,但应该可以 ...

  5. Hawk 5.1 数据导入和导出

    除了一般的数据库导入导出,Hawk还支持从文件导入和导出,支持的文件类型包括: Excel CSV(逗号分割文本文件) TXT (制表符分割文本文件) Json xml Excel 目前来看,Exce ...

  6. Hawk 4.6 并行化

    并行化 Hawk支持单机并行化,也就是使用多线程获取数据.它可以控制目前所有任务的数量,为了不给网站造成过大的压力,仅当任务池中的任务数量小于一定值后,才会插入新的任务. 你可以在数据清洗的 执行面板 ...

  7. Hawk 4.4 执行器

    执行器是负责将Hawk的结果传送到外部环境的工具.你可以写入数据表,数据库,甚至执行某个特定的动作,或是生成文件等等. 在调试模式下,执行器都是不工作的.这是为了避免产生副作用.否则,每刷新一遍数据, ...

  8. Hawk 4.3 转换器

    转换器是最为常用的一种类型,当然它的使用也是最复杂的. 转换器有三种子类型: A:单文档->单文档:例如仅将某一列的字符提取出来 B:单文档->多文档:典型的如从爬虫转换,每一行url都可 ...

  9. Hawk 4. 数据清洗

    数据清洗模块,包括几十个子模块, 这些子模块包含四类:生成, 转换, 过滤和执行. 数据清洗可以通过组合多个不同的子模块,生成多样的功能,通过拖拽构造出一个工作流,它能够产生一个有限或无限的文档序列. ...

随机推荐

  1. 03.SQLServer性能优化之---存储优化系列

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概  述:http://www.cnblogs.com/dunitian/p/60413 ...

  2. js学习笔记:操作iframe

    iframe可以说是比较老得话题了,而且网上也基本上在说少用iframe,其原因大致为:堵塞页面加载.安全问题.兼容性问题.搜索引擎抓取不到等等,不过相对于这些缺点,iframe的优点更牛,跨域请求. ...

  3. 旺财速啃H5框架之Bootstrap(五)

    在上一篇<<旺财速啃H5框架之Bootstrap(四)>>做了基本的框架,<<旺财速啃H5框架之Bootstrap(二)>>篇里也大体认识了bootst ...

  4. 窥探Vue.js 2.0 - Virtual DOM到底是个什么鬼?

    引言 你可能听说在Vue.js 2.0已经发布,并且在其中新添加如了一些新功能.其中一个功能就是"Virtual DOM". Virtual DOM是什么 在之前,React和Em ...

  5. JSP 标准标签库(JSTL)

    JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...

  6. 记一次.NET代码重构

    好久没写代码了,终于好不容易接到了开发任务,一看时间还挺充足的,我就慢慢整吧,若是遇上赶进度,基本上直接是功能优先,完全不考虑设计.你可以认为我完全没有追求,当身后有鞭子使劲赶的时候,神马设计都是浮云 ...

  7. js刷新页面方法大全

    如何实现刷新当前页面呢?借助js你将无所不能. 1,reload 方法,该方法强迫浏览器刷新当前页面.语法:location.reload([bForceGet])   参数: bForceGet, ...

  8. iOS系列教程 目录 (持续更新...)

      前言: 听说搞iOS的都是高富帅,身边妹子无数.咱也来玩玩.哈哈. 本篇所有内容使用的是XCode工具.Swift语言进行开发. 我现在也是学习阶段,每一篇内容都是经过自己实际编写完一遍之后,发现 ...

  9. MongoDB学习笔记六—查询下

    查询内嵌文档 数据准备 > db.blog.find().pretty() { "_id" : ObjectId("585694e4c5b0525a48a441b5 ...

  10. Linux基础介绍【第九篇】

    服务器添加3块磁盘的体系结构 [root@oldboylinux test]# free -m              total used free shared buffers cached M ...