解决方案:可视化数据采集器import.io与集搜客评测对比

优采云 发布时间: 2022-11-18 01:26

  解决方案:可视化数据采集器import.io与集搜客评测对比

  大数据企业报告:大数据产品、大数据解决方案、

  大数据人物

  分享大数据干货:大数据书籍、大数据报告、

  大数据视频

  本文为苏克大数据贡献者合集。更多高质量的原创文章欢迎大数据人投稿:

  摘要: Import.io是一款国外的大数据采集软件,最近很火。在获得90万美元的天使轮融资后,近日又获得了1300万美元的A轮融资,吸引了众多投资者的关注。我也很好奇,想体验一下import.io的神奇功能。我是国内大数据采集软件合集GooSeeker的老用户,所以喜欢把两者放在一起比较。下面我将比较印象最深刻的功能分别对应import.io的四大功能:Magic、Extractor、Crawler、Connector,分别进行评测。

  对于对数据采集比较感兴趣的朋友,希望能起到抛砖引玉的作用,让大家分析一下数据采集的技术亮点。

  1. 魔法(Import.io)VS天眼和千面(基搜客)

  魔法 -

  正如magic“魔法”这个词的本义,import.io赋予了Magic神奇的功能。用户只需要输入网址,Magic工具就可以神奇地将网页中的数据整齐规范地抓取下来。

  如图1,输入58同城租房信息网址后,Magic会自动采集网页数据,操作简单。但是可以看到可能漏掉了一些栏目,每一页都需要点击“下一页”才能继续采集,无法自动翻页。当然,还有很多网页几乎什么采集都不能发,比如新浪微博。

  无论如何,我觉得很神奇:

  1)他怎么知道我想要什么信息?

  2)是不是有人在后台预制的?

  3)有的网址输入后等待时间比较短,有的网址输入后等待时间很长。真的有人在后台制定 采集 规则吗?

  图一:Magic自动抓取示例

  上图是import.io的Magic功能的界面截图。它是一个纯网页界面,不需要安装额外的软件。使用起来非常方便。综上所述:

  优点:适配任何URL,操作非常简单,自动采集、采集结果可视化。

  缺点:不能选择具体数据,不能自动翻页采集(我不熟?)。

  GooSeeker的天眼和千面系列——

  极搜客的天眼和千面分别为电商和微博发布的数据采集提供了便捷的GUI界面。只需输入网址,目标数据就可以整齐地采集下载。

  如图2所示:展示了博主的采集工具(微博数据的多方面都有采集管理界面),进入博主首页的链接,即可派发爬虫。首页下的信息是采集,比如微博内容、转发、评论等数据。

  图二:GooSeeker微博博主采集界面示例

  界面也非常简单。与Import.io相比,最大的不同在于用户自己运行爬虫组。采集 体积大时多运行,可直接获取原创数据,保存在本地硬盘。结构转换后的 XML 格式的结果文件。

  优点:操作非常简单,可以自动翻页采集,微博能看到的重要字段都收录了。

  缺点:采集数据字段有限,只有采集GooSeeker官方有限制网站。

  从上面的分析可以看出,Magic和GooSeeker的天眼和千面在操作上都非常简单,基本属于纯傻瓜式操作,非常适合那些只想关注业务问题和不想被技术问题分心用户也是纯初学者学习数据采集和使用数据结果的一个很好的起点。但是,Magic在采集结果可视化方面比天眼和千眼有更广泛的适用性。缺点是数据量大的采集场景不可控,而天眼和千面主打几款主流的网站,优势主要体现在采集可以完成大数据量数据的。例如,

  2.提取器(import.io)VS排序框(jisoke)

  提取器——

  Extractor的翻译就是提取器。如果从实体的角度来理解,就是一个小程序(可能是一组脚本),从URL中一个一个地提取出想要的信息;如果从采集目标的角度去理解,那就是采集具体网页结构的一个规则。与 Magic 不同,import.io 的 Extractor(以及它背后的其他两个功能)是一个独立运行的软件,具有非常直观的可视化界面,可以直观地显示提取的信息。

  

  如图3所示:Import.io的Extractor非常类似于修改后的浏览器。在工具栏中输入网址,网页显示后,在浏览器中选择要抓取的数据,即可实现单页同步复制。结构体的数据有序地列在采集中。

  图 3:Extractor 提取的数据示例

  优点:灵活采集,操作简单,可视化程度高。

  缺点:采集数据是高度结构化的,对于结构不好的数据,采集无法很好地执行。

  GooSeeker 分拣箱——

  极搜客宣称的是“建一个盒子,把你想要的内容放进去”。这个箱子就是所谓的分类箱。客户端程序可以自动生成提取器(脚本程序),提取器自动存储在云端服务器,可以分发给全球网络爬虫进行提取。

  如图 4 所示,import.io 顶部的工具栏扩展为 GooSeeker 中的工作台。在工作台上创建盒子,然后通过映射操作将网页上的内容放入盒子中。把你想要的东西扔进盒子里。原理看似简单,但是面对一个大盒子界面和众多HTML节点,对于新手来说还是有点压力的。当然,界面的复杂换来的是能够处理更复杂的情况,因为可用的控件更多。

  图 4:分类 bin 提取数据的示例

  优点:提取精度可微调,提取字段灵活,也适用于比较复杂的网页

  缺点:可视化效果一般,需要有简单html的基础知识

  综上所述,Extractor和排序框都具有提取信息字段的功能。Extractor操作起来比较简单直观,适用于一些结构简单的URL。但是,对于一些稍微复杂的 URL,Extractor 可能无法提取它们。这时候极速客分拣箱的优势就凸显出来了。在特别复杂的情况下,也可以使用自定义的xpath来定位数据。

  3. 爬虫(import.io)VS 爬虫路由(GooSeeker)

  爬虫——

  Crawler直译就是网络爬虫的意思。顾名思义,就是在深度和广度方向进行扩展,为了采集更多的数据。Crawler基于Extractor实现自动翻页功能。假设你想要100页的采集网页数据,你可以通过import.io的Crawler功能采集下载这100页的信息采集,那么具体采集流程实现了,下面笔者就带大家简单了解一下Crawler的采集流程。

  如图5所示,以58个城市的租房信息为例,通过搜索关键词共找到N页租房信息,提取这些租房信息。爬虫操作如下:

  (1) 对于采集样本数据,提取第一页所需的采集数据(图5)。采集的原理和Extracor一样,这里不再赘述。

  图 5:Crawle 提取的数据示例

  (2) 训练数据集,进入第二页(图6),Crawler会自动采集第二页数据(提取的字段与第一页相同),然后翻到下一页,因为网页的结构是没有变化的,Crawler也会自动采集,循环这个训练过程,当Crawler认为采集到足够多的训练集时(据说最多支持5个样本)(图7)、训练完成,点击结束,保存,即可成功采集所有页面数据。

  图 6:抓取添加页面示例

  图 7:爬行训练样本完成

  Import.io 的 Crawler 训练过程非常简单易懂。你只需要多选几个结构相同的页面进行测试,就相当于告诉爬虫我只要采集这些相似页面的信息,而爬虫在了解了这些需求后,得到的信息同样的结构可以采集下来,但是会出现一些小问题,当一些字段有细微的变化时,因为和之前训练的采集数据不一样,这个信息就会missed,所以Crawler更适合结构非常固定的页面。

  综上所述:

  优点:灵活的采集,易于操作,采集过程可视化

  缺点:继承了Extractor的缺点,对数据结构要求高

  GooSeeker 爬虫路线——

  Jisoke的爬虫路由的实现是基于排序框的。原理与Crawler基本相似,但适应性更广。负面影响是操作相对复杂。

  我们先回顾一下整理箱子的概念。GooSeeker 一直宣称“建一个盒子,把你需要的内容放进去”。

  如图8所示,以采集京东手机信息为例,如果要采集所有关于手机信息数据的页面,操作如下:

  (1) 创建一个排序框,将要提取的数据放入其中,爬取规则会自动生成。然而,操作并不像这句话那么简单,而是:

  a) 创建排序框,这个很简单,点击“新建”按钮即可

  

  b) 在整理箱中创建名为“爬虫内容”的字段,即将网页内容放入这些字段中

  c) 在DOM树上选择要抓取的节点,映射到某个字段。

  既然说“建一个盒子,把需要的内容扔进去”,那为什么不实际直观地做这个操作呢?这方面需要改进,敬请关注即将发布的版本中的直观标注。

  (2)构建爬虫路线,将“下一页”映射为标记线索(如图8所示)。设置完成并保存后,所有页面的信息会自动采集。虽然这个过程说起来很简单,但是和Crawer相比,操作起来还是有点不直观。它需要做一些简单的映射,即告诉爬虫:“这里是我要点击的”,“这里是我要提取的”如下图,主要操作是在HTML上完成的DOM。用户最好有简单的html基础,这样可以准确定位DOM节点,不局限于可见的文本。

  图8:爬虫路由转向原理页面示例

  优点:采集精度高,适用范围广。

  缺点:可视化效果一般,需要学习实践才能上手。

  综上所述,Import.io的Crawler和GooSeeker的爬虫路由主要是完成网络爬虫扩展爬取范围和深度的任务。以上我们仅以翻页为例,大家可以自行实践体验分层爬虫。爬虫的操作比较简单,但是适应性比较窄,对网站的结构一致性要求比较高,而爬虫路由的功能相对比较强大,可以适应各种复杂的网站 ,但其操作也比较复杂。

  4.连接器(import.io)VS连续点击(Jisoke)

  连接器 -

  import.io的Connector是在网页上做动作,主要针对网站不做改动,但是信息在深层页面。只有在执行操作后才能显示,但是页面的URL并没有改变,这大大增加了采集数据的难度,因为即使配置了规则,爬虫进入的页面也是初始页面不能采集定位信息,Connector的存在就是为了解决这样的问题。Connector可以记录这个点击过程,然后采集去到目标页面信息。同样以58同城的租房信息为例,测试一下Connector功能的可操作性。

  (1) 点击找到采集信息所在的页面。如图9所示,Connector可以记录用户的每一次点击行为。

  图 9:连接器操作示例

  (2)在目标页面上建立规则提取信息。到达目标页面后,要做的操作和前面一样,提取需要的采集信息。

  通过动手实践,发现连续点击的失败率比较高。如果是搜索,这个动作很容易被记录下来,但是如果只是点击动作,就很难被记录成功。如果可能,读者可以自己尝试一下,看看是什么原因造成的。

  是不是有一种似曾相识的感觉?没错,它有点像一个网络测试工具。它记录动作然后回放。用户体验非常好,但有时会出现录制失败的情况。稍后执行时,如果网页的 HTML DOM 稍有变化,则动作可能会放在错误的位置。

  优点:易于操作,采集过程完全可视化。

  缺点:点击动作最多只能点击10次,功能比较单一。同时,从使用的角度来看,Connector的录音功能故障率比较高,操作经常失败,这可能是直观可视化的代价。

  GooSeeker 连续点击——

  Jisoke的连续点击功能如出一辙,正如它的名字一样。实现点击和采集的功能,结合爬虫路由,可以产生更强大的采集效果。这是一个比较高级的客户采集功能,可以产生很多意想不到的采集方法,这里简单举个例子。

  如图10所示,需要采集微博个人信息,因为这些数据只有将鼠标放在角色头像上才能显示,都需要使用连续点击功能继佐克。操作如下:

  (1)采集目标字段,首先定位到网页,采集这些必填的采集字段。方法同上,不再赘述。

  (2) 设置连续动作。在执行采集之前,可以进行一系列动作,所以称为“连续”。它不像直观的记录那么简单。你需要点击“创建”按钮来创建一个动作,指定它点击的位置(一个网页节点,用xpath表示),并指定它是什么类型的动作,并根据需要设置一些高级选项。

  (3) 如图11所示,GooSeeker也相当于记录了一组动作,还可以重新排序或者增删改查。从图11可以看出,没有类似录音过程这样亲民的界面。再次看到GooSeeker的特点:严谨的制作工具

  图 10:连续点击动作示例

  图11:连续动作的编排界面

  优点:功能强大,采集有能力。

  缺点:上手难度大,操作相对复杂。

  综上所述,import.io的Connector在操作上还是秉承了其一贯的风格,简单易用,而极搜客也再次给人一种“生产工具”的感觉。在连续动作的功能上,两者基本相同。

  通过以上对比,相信大家对大数据采集软件import.io和极搜客有了一个直观的认识。从各项功能对比来看,最突出的特点主要体现在可视化、易学、操作简单。它致力于为纯粹的傻瓜式操作创建采集软件。极速客的特点主要体现在半可视化、功能完备、采集能力强,致力于为用户提供完备、强大的数据采集功能。总之,两者各有优缺点,都是非常不错的数据采集软件。

  最后,有兴趣的读者可以去深入体验和研究,因为两者所宣示的价值不仅仅是一个软件工具,其目标是“互联网数据的结构化转换,把网络变成每个人的数据库”。希望以后有机会再次分享我这方面的经验。

  解决方案:minio+kettle+airflow实现采集数据自动入库

  一、Minio介绍

  Minio是一个基于Golang编写的开源对象存储套件;虽然它很轻,但它具有良好的性能。针对中小企业;如果您不选择存储在云端;那么Minio是一个不错的选择;麻雀虽小,五脏俱全。minio在服务器的部署这里不再赘述;网上有很多教程;你可以自己搜索。

  1.1 minio界面

  部署完成后,可以通过minio上传非结构化数据文件;比如常用的excel表格,图片等。如果我们自己学会使用,可以直接通过xshell等工具向服务器传输数据。但是在生产环境中,我们往往需要准备一个程序或者平台供业务人员使用;因此,需要文件传输作业;这里我们选择minio。

  2.水壶介绍

  Kettle最早是国外开源的ETL工具;它的全称是 KDE Extraction, Transportation, Transformation and Loading Environment。分为商业版和开源版。它可以在 Windows、Linux 和 Unix 上运行;绿色不需要安装;数据提取高效稳定。水壶的中文名称是Kettle。它允许管理来自不同数据库的数据;把各种数据放在一个锅里;并以指定的格式流出。

  Kettle支持市面上几乎所有的数据库系统;是传统数据仓库的神针,是传统数据仓库分析的必备神器。通过提供图形用户环境来描述你想做什么;不是你想怎么做。

  需要入库的数据是通过etl工具实现的;Kettle是小数据量的好选择;使用起来很快;门槛低。

  2.1kettle界面

  

  3.气流介绍

  Airflow是可编程的;调度和监控工作流平台;基于有向无环图(DAG);airflow 可以定义一组依赖任务;根据依赖关系依次执行它们。Airflow 为系统管理和控制提供了丰富的命令行工具;其网页管理界面也可以轻松控制和安排任务;并实时监控任务的运行状态;便于系统运行、维护和管理。

  本次使用airflow调度工具实现数据自动入库。

  3.1 气流接口

  4. 实施过程 4.1 数据上传

  一、通过minio上传功能;上传数据文件到服务器。

  4.2 数据清洗Kettle

  这次数据文件是excel;以此为例。

  整个工作流程是这样的;

  涉及工作和转换。设置变量;可选的; 当作业成功运行时,源文件将从上传的文件夹合并到完成的文件夹;如果检查中没有对应的文件,则程序直接跳转到成功,不再继续执行。清除进程表;每个上传的数据都会先写入进程表;然后读取并写入目标表。导入目标表;无话可说;修改文件的纯sql脚本;成功后,将源文件移动到存档文件夹失败通知;这是一封电子邮件通知。

  

  水壶非常容易操作;这是我项目的一些要点;

  由于数据是人工的采集;并且没有设置唯一字段;因此,有些字段需要组合成md5密码才能存储;区分数据是否重复。

  update ods.v_stu_temp

set file_uuid = MD5(concat(ifnull(factor_id,;;),ifnull(org_id,;;),ifnull(stat_year,;;),ifnull(num_disciplines,;;)))</b>

  从中间表导入到目标表时;在sql脚本中添加过滤条件即可;如果匹配的中间表的md5码不在目标表中,则写入insert。

  4.3 airflow任务调度

  最后,编写airflow调度脚本;上传到/opt/airflow/dags;dags目录;然后刷新页面,可以看到网页上有新的任务;点击开始

  4.4bi平台数据查看

  最后通过bi平台连接数据库;查看数据库数据;实现数据查看

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线