Hawk 5. 数据库系统
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. 数据库系统的更多相关文章
- 设计爬虫Hawk背后的故事
本文写于圣诞节北京下午慵懒的午后.本文偏技术向,不过应该大部分人能看懂. 五年之痒 2016年,能记入个人年终总结的事情没几件,其中一个便是开源了Hawk.我花不少时间优化和推广它,得到的评价还算比较 ...
- 120项改进:开源超级爬虫Hawk 2.0 重磅发布!
沙漠君在历时半年,修改无数bug,更新一票新功能后,在今天隆重推出最新改进的超级爬虫Hawk 2.0! 啥?你不知道Hawk干吗用的? 这是采集数据的挖掘机,网络猎杀的重狙!半年多以前,沙漠君写了一篇 ...
- Hawk 7. 常见问题
本页面您可以通过关键字搜索来获取信息. 理性使用爬虫 爬虫是一种灰色的应用,虽然作为Hawk的设计者,但我依然不得不这么说. 各大网站都在收集和整理数据上花费了大量的精力,因此抓取的数据应当仅仅作为科 ...
- Hawk 6. 编译和扩展开发
Hawk是开源项目,因此任何人都可以为其贡献代码.作者也非常欢迎使用者能够扩展出更有用的插件. 编译 编译需要Visual Stuido,版本建议使用2015, 2010及以上没有经过测试,但应该可以 ...
- Hawk 5.1 数据导入和导出
除了一般的数据库导入导出,Hawk还支持从文件导入和导出,支持的文件类型包括: Excel CSV(逗号分割文本文件) TXT (制表符分割文本文件) Json xml Excel 目前来看,Exce ...
- Hawk 4.6 并行化
并行化 Hawk支持单机并行化,也就是使用多线程获取数据.它可以控制目前所有任务的数量,为了不给网站造成过大的压力,仅当任务池中的任务数量小于一定值后,才会插入新的任务. 你可以在数据清洗的 执行面板 ...
- Hawk 4.4 执行器
执行器是负责将Hawk的结果传送到外部环境的工具.你可以写入数据表,数据库,甚至执行某个特定的动作,或是生成文件等等. 在调试模式下,执行器都是不工作的.这是为了避免产生副作用.否则,每刷新一遍数据, ...
- Hawk 4.3 转换器
转换器是最为常用的一种类型,当然它的使用也是最复杂的. 转换器有三种子类型: A:单文档->单文档:例如仅将某一列的字符提取出来 B:单文档->多文档:典型的如从爬虫转换,每一行url都可 ...
- Hawk 4. 数据清洗
数据清洗模块,包括几十个子模块, 这些子模块包含四类:生成, 转换, 过滤和执行. 数据清洗可以通过组合多个不同的子模块,生成多样的功能,通过拖拽构造出一个工作流,它能够产生一个有限或无限的文档序列. ...
随机推荐
- .net点选验证码实现思路分享
哈哈好久没冒泡了,最进看见点选验证码有点意思,所以想自己写一个. 先上效果图 如果你被这个效果吸引了就请继续看下去. 贴代码前先说点思路: 1.要有一个汉字库,并按字形分类.(我在数据库里是安部首分类 ...
- 【每日一linux命令3】参数(或称选项)顺序
一般除了特殊情况,参数是没有顺序的.举例而言,输入"–a –v"与输入"–v –a"以及"–av" 的执行效果是相同的.但若该参数后指定了要 ...
- python之路 - 基础1
1.安装windows安装双版本Python2,Python3 下载Python2和Python3https://www.python.org/downloads/ 分别安装两个版本 进入Python ...
- C# 正则表达式大全
文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...
- CRL快速开发框架系列教程六(分布式缓存解决方案)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- C#中如何在Excel工作表创建混合型图表
在进行图表分析的时候,我们可能需要在一张图表呈现两个或多个样式的图表,以便更加清晰.直观地查看不同的数据大小和变化趋势.在这篇文章中,我将分享C#中如何在一张图表中创建不同的图表类型,其中包括如何在同 ...
- Openfiler配置RAC共享存储
将 Openfiler 用作 iSCSI 存储服务器,主要操作步骤如下: 1.设置 iSCSI 服务 2.配置网络访问 3.指定物理存储器并对其分区 4.创建新的卷组 5.创建所有逻辑卷 6.为每个逻 ...
- ASP.NET Core 中文文档 第四章 MVC(3.9)视图组件
作者: Rick Anderson 翻译: 娄宇(Lyrics) 校对: 高嵩 章节: 介绍视图组件 创建视图组件 调用视图组件 演练:创建一个简单的视图组件 附加的资源 查看或下载示例代码 介绍视图 ...
- 在DevExpress程序中使用GridView直接录入数据的时候,增加列表选择的功能
在我上篇随笔<在DevExpress程序中使用Winform分页控件直接录入数据并保存>中介绍了在GridView以及在其封装的分页控件上做数据的直接录入的处理,介绍情况下数据的保存和校验 ...
- 著名ERP厂商的SSO单点登录解决方案介绍一
SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同一个用户 ...