数据采集:如何⾃动化采集数据?
上⼀节中我们讲了如何对⽤户画像建模,⽽建模之前我们都要进⾏数据采集。数据采集是数据挖掘的基础,没有数据,挖掘也没有意义。很多时候,我们拥有多少数据源,多少数据量,以及数据质量如何,
将决定我们挖掘产出的成果会怎样。
举个例⼦,你做量化投资,基于⼤数据预测未来股票的波动,根据这个预测结果进⾏买卖。你当前能够拿到以往股票的所有历史数据,是否可以根据这些数据做出⼀个预测率⾼的数据分析系统呢?
四大名著作者实际上,如果你只有股票历史数据,你仍然⽆法理解股票为什么会产⽣⼤幅的波动。⽐如,当时可能是爆发了SARS疫情,或者某地区发⽣了战争等。这些重⼤的社会事件对股票的影响也是巨⼤的。
因此我们需要考虑到,⼀个数据的⾛势,是由多个维度影响的。我们需要通过多源的数据采集,收集到尽可能多的数据维度,同时保证数据的质量,这样才能得到⾼质量的数据挖掘结果。
那么,从数据采集⾓度来说,都有哪些数据源呢?我将数据源分成了以下的四类。
这四类数据源包括了:开放数据源、爬⾍抓取、传感器和⽇志采集。它们各有特点。
6g研发中国开跑开放数据源⼀般是针对⾏业的数据库。⽐如美国⼈⼝调查局开放了美国的⼈⼝信息、地区分布和教育情况数据。除了政府外,企业和⾼校也会开放相应的⼤数据,这⽅⾯北美相对来说做得好⼀些。国内,贵州做了不少⼤胆尝试,搭建了云平台,逐年开放了旅游、交通、商务等领域的数据量。
要知道很多研究都是基于开放数据源进⾏的,否则每年不会有那么多论⽂发表,⼤家需要相同的数据集才能对⽐出算法的好坏。
爬⾍抓取,⼀般是针对特定的⽹站或App。如果我们想要抓取指定的⽹站数据,⽐如购物⽹站上的购物评价等,就需要我们做特定的爬⾍抓取。
第三类数据源是传感器,它基本上采集的是物理信息。⽐如图像、视频、或者某个物体的速度、热度、压强等。
最后是⽇志采集,这个是统计⽤户的操作。我们可以在前端进⾏埋点,在后端进⾏脚本收集、统计,来分析⽹站的访问情况,以及使⽤瓶颈等。
知道了有四类数据源,那如何采集到这些数据呢?
如何使⽤开放数据源
我们先来看下开放数据源,教你个⽅法,开放数据源可以从两个维度来考虑,⼀个是单位的维度,⽐如政府、企业、⾼校;⼀个就是⾏业维度,⽐如交通、⾦融、能源等领域。这⽅⾯,国外的开放数据源⽐国内做得好⼀些,当然近些年国内的政府和⾼校做开放数据源的也越来越多。⼀⽅⾯服务社会,另⼀⽅⾯⾃⼰的影响⼒也会越来越⼤。
⽐如,下⾯这张表格列举的就是单位维度的数据源。
所以如果你想某个领域的数据源,⽐如⾦融领域,你基本上可以看下政府、⾼校、企业是否有开放的数据源。当然你也可以直接搜索⾦融开放数据源。
如何使⽤爬⾍做抓取
爬⾍抓取应该属于最常见的需求,⽐如你想要餐厅的评价数据。当然这⾥要注重版权问题,⽽且很多⽹站也是有反爬机制的。
冬至放假最直接的⽅法就是使⽤Python编写爬⾍代码,当然前提是你需要会Python的基本语法。除此之外,PHP也可以做爬⾍,只是功能不如Python完善,尤其是涉及到多线程的操作。
在Python爬⾍中,基本上会经历三个过程。
1. 使⽤ Requests 爬取内容。我们可以使⽤ Requests库来抓取⽹页信息。Requests 库可以说是 Python 爬⾍的利器,也就是Python
的HTTP 库,通过这个库爬取⽹页中的数据,⾮常⽅便,可以帮我们节约⼤量的时间。
2. 使⽤ XPath 解析内容。XPath 是XML Path的缩写,也就是XML 路径语⾔。它是⼀种⽤来确定 XML ⽂档中某部分位置的语⾔,在
开发中经常⽤来当作⼩型查询语⾔。XPath可以通过元素和属性进⾏位置索引。
3. 使⽤ Pandas 保存数据。Pandas 是让数据分析⼯作变得更加简单的⾼级数据结构,我们可以⽤ Pandas 保存爬取的数据。最后通过
Pandas再写⼊到XLS或者MySQL等数据库中。
Requests、XPath、Pandas是Python的三个利器。当然做Python爬⾍还有很多利器,⽐如Selenium,PhantomJS,或者⽤Puppteteer这种⽆头模式。开口松子
另外我们也可以不编程就抓取到⽹页信息,这⾥介绍三款常⽤的抓取⼯具。
⽕车采集器已经有13年历史了,是⽼牌的采集⼯具。它不仅可以做抓取⼯具,也可以做数据清洗、数据分析、数据挖掘和可视化等⼯作。数据源适⽤于绝⼤部分的⽹页,⽹页中能看到的内容都可以通过采集规则进⾏抓取。
⼋⽖鱼也是知名的采集⼯具,它有两个版本,⼀个就是免费的采集模板,还有⼀个就是云采集(付费)。
免费的采集模板实际上就是内容采集规则,包括了电商类、⽣活服务类、社交媒体类和论坛类的⽹站都可以采集,⽤起来⾮常⽅便。当然你也可以⾃⼰来⾃定义任务。
那什么是云采集呢?就是当你配置好采集任务,就可以交给⼋⽖鱼的云端进⾏采集。⼋⽖鱼⼀共有5000台服务器,通过云端多节点并发采集,采集速度远远超过本地采集。此外还可以⾃动切换多个 IP,避免IP被封,影响采集。
做过⼯程项⽬的同学应该能体会到,云采集这个功能太⽅便了,很多时候⾃动切换IP以及云采集才是⾃动化采集的关键。
下⼀篇⽂章我会给你详细介绍⼋⽖鱼的使⽤。
这个⼯具的特点是完全可视化操作,⽆需编程。整个采集过程也是所见即所得,抓取结果信息、错误信息等都反应在软件中。相⽐于⼋⽖鱼来说,集搜客没有流程的概念,⽤户只需要关注抓取什么数据,⽽流程细节完全交给集搜客来处理。
但是集搜客的缺点是没有云采集功能,所有爬⾍都是在⽤户⾃⼰电脑上跑的。
如何使⽤⽇志采集⼯具
传感器采集基本上是基于特定的设备,将设备采集的信息进⾏收集即可,这⾥我们就不重点讲解了。
下⾯我们来看⽇志采集。
为什么要做⽇志采集呢?⽇志采集最⼤的作⽤,就是通过分析⽤户访问情况,提升系统的性能,从⽽提⾼系统承载量。及时发现系统承载瓶颈,也可以⽅便技术⼈员基于⽤户实际的访问情况进⾏优化。
⽇志采集也是运维⼈员的重要⼯作之⼀,那么⽇志都包括哪些呢,⼜该如何对⽇志进⾏采集呢?
⽇志就是⽇记的意思,它记录了⽤户访问⽹站的全过程:哪些⼈在什么时间,通过什么渠道(⽐如搜索引擎、⽹址输⼊)来过,都执⾏了哪些操作;系统是否产⽣了错误;甚⾄包括⽤户的IP、HTTP请求的时间,⽤户代理等。这些⽇志数据可以被写在⼀个⽇志⽂件中,也可以分成不同的⽇志⽂件,⽐如访问⽇志、错误⽇志等。
⽇志采集可以分两种形式。
1. 通过Web服务器采集,例如 httpd、Nginx、Tomcat 都⾃带⽇志记录功能。同时很多互联⽹企业都有⾃⼰的海量数据采集⼯具,多
⽤于系统⽇志采集,如Hadoop的Chukwa、Cloudera的Flume、Facebook的Scribe等,这些⼯具均采⽤分布式架构,能够满⾜每秒数百MB的⽇志数据采集和传输需求。
2. ⾃定义采集⽤户⾏为,例如⽤JavaScript代码监听⽤户的⾏为、AJAX异步请求后台记录⽇志等。
埋点是什么
高倍望远镜埋点是⽇志采集的关键步骤,那什么是埋点呢?
埋点就是在有需要的位置采集相应的信息,进⾏上报。⽐如某页⾯的访问情况,包括⽤户信息、设备信息;或者⽤户在页⾯上的操作⾏为,包括时间长短等。这就是埋点,每⼀个埋点就像⼀台摄像头,采集⽤户⾏为数据,将数据进⾏多维度的交叉分析,可真实还原出⽤户使⽤场景,和⽤户使⽤需求。
那我们要如何进⾏埋点呢?
埋点就是在你需要统计数据的地⽅植⼊统计代码,当然植⼊代码可以⾃⼰写,也可以使⽤第三⽅统计⼯具。我之前讲到“不重复造轮⼦”的原则,⼀般来说需要⾃⼰写的代码,⼀般是主营核⼼业务,对于埋点这类监测性的⼯具,市场上已经⽐较成熟,这⾥推荐你使⽤第三⽅的⼯具,⽐如友盟、Google Analysis、Talkingdata等。他们都是采⽤前端埋点的⽅式,然后在第三⽅⼯具⾥就可以看到⽤户的⾏为数据。但如果我们想要看到更深层的⽤户操作⾏为,就需要进⾏⾃定义埋点。
总结⼀下,⽇志采集有助于我们了解⽤户的操作数据,适⽤于运维监控、安全审计、业务数据分析等场景。⼀般Web服务器会⾃带⽇志功能,也可以使⽤Flume从不同的服务器集中采集、汇总和传输⼤容量的⽇志数据。当然我们也可以使⽤第三⽅的统计⼯具或⾃定义埋点得到⾃⼰想要的统计内容。
总结
数据采集是数据分析的关键,很多时候我们会想到Python⽹络爬⾍,实际上数据采集的⽅法、渠道很⼴,有些可以直接使⽤开放的数据源,⽐如想获取⽐特币历史的价格及交易数据,可以直接从Kaggle上下载,不需要⾃⼰爬取。
另⼀⽅⾯根据我们的需求,需要采集的数据也不同,⽐如交通⾏业,数据采集会和摄像头或者测速仪有关。对于运维⼈员,⽇志采集和分析则是关键。所以我们需要针对特定的业务场景,选择适合的采集⼯具。
>账款管理
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论