数据采集的技术有哪些,数据采集可以通过什么来实现
上一节我们讲了如何进行用户画像建模,建模之前都需要收集数据。数据收集是数据挖掘的基础。没有数据,挖掘就没有意义。很多时候,我们有多少数据源,有多少数据,数据质量有多好,会决定我们挖掘输出的结果。
比如你做一个量化投资,基于大数据预测未来的股票波动,根据这个预测结果进行买卖。目前可以得到所有过往股票的历史数据。能不能根据这些数据做一个预测率很高的数据分析系统?
事实上,如果你只有股票历史数据,你仍然无法理解为什么股票波动很大。比如某个地区可能爆发了非典或者战争。这些重大的社会事件对股市也有巨大的影响。
所以我们需要考虑一个数据的走势是受多个维度影响的。我们需要通过多源的数据采集收集尽可能多的数据维度,同时保证数据的质量,才能得到高质量的数据挖掘结果。
那么,从数据收集的角度来看,数据来源是什么呢?我将数据来源分为以下四类。
这四类数据源包括:开放数据源、爬虫爬行、传感器和日志收集。他们各有特色。
开放数据源通常是特定于行业的数据库。例如,美国人口普查局开放了美国的人口信息、地区分布和教育数据。除了政府,企业和高校也会开放相应的大数据,北美相对好一些。在国内,贵州做了很多大胆的尝试,搭建了云平台,逐年开放旅游、交通、商业等领域的数据量。
要知道很多研究都是基于开放的数据源,否则每年也不会有那么多论文发表,每个人都需要相同的数据集来比较算法。
抓取,通常是针对某个特定的网站或App。如果我们要抓取指定的网站数据,比如购物网站上的购物评价,就需要做特定的爬虫抓取。
第三类数据源是传感器,基本上是收集物理信息。例如图像、视频或速度、热量、压力等。一个物体。
最后是日志收集,统计用户的操作。我们可以在前端掩埋站点,在后端收集统计脚本,分析网站的访问和使用瓶颈。
知道有四种类型的数据来源,你如何收集这些数据?
如何使用开放数据源?我们先来看看开放数据源,教你一个方法。开放数据源可以从两个维度考虑,一个是单位的维度,比如政府、企业、高校;一个是行业维度,比如交通、金融、能源等领域。在这方面,国外的开放数据源比国内要好。当然,近年来,越来越多的国内政府和高校在做开放数据源。一方面服务社会,另一方面影响力也会越来越大。
例如,下表列出了单位维的数据源。
所以如果你想找某个领域的数据源,比如金融领域,基本上可以查一下政府、高校、企业是否有开放的数据源。当然,你也可以直接搜索金融开放数据源。
如何使用爬虫作为爬虫,应该属于最常见的需求,比如你想要的餐厅的评价数据。当然这里要注意版权问题,很多网站也有反抓取机制。
最直接的方法就是用Python写爬虫代码,当然前提是你要知道Python的基本语法。除此之外,PHP还可以做爬虫,但是功能不如Python完善,尤其是多线程方面。
在Python爬虫中,基本上有三个过程。
使用请求对内容进行爬网。我们可以使用请求库来获取web信息。请求库可以说是Python爬虫的利器,也就是Python的HTTP库。通过这个库从网页中抓取数据非常方便,可以帮助我们节省很多时间。
使用XPath解析内容。XXPathPath是XPathPath的缩写,即XML路径语言。它是一种用来确定XML文档某一部分位置的语言,在开发中经常作为一种小型查询语言使用。XPath可以通过元素和属性进行索引。
用熊猫保存数据。Pandas是一种先进的数据结构,使数据分析更加容易。我们可以用熊猫来保存抓取的数据。最后,通过熊猫将其写入XLS或MySQL数据库。
请求、XPath和熊猫是Python的三大利器。当然,Python爬虫的利器还有很多,比如Selenium,PhantomJS,或者Puppteteer的无头模式。
另外,我们也可以不用编程抓取网页信息。下面是三个常用的抓取工具。
火车采集器
火车收藏家已经有13年的历史了,是一个古老的收藏工具。它不仅可以用作抓取工具,还可以用于数据清洗、数据分析、数据挖掘和可视化。数据源适用于大部分网页,网页中所有能看到的内容都可以通过采集规则来抓取。
八爪鱼
八达通也是一个众所周知的收集工具。它有两个版本,一个是免费收藏模板,一个是云收藏(付费)。
免费收集模板实际上是内容收集规则。包括电商、生活服务、社交媒体、论坛等网站都可以收藏,用起来很方便。当然,你也可以定义自己的任务。
什么是云收藏?就是那片迷人的枫叶,在采集任务配置的时候,可以交给章鱼的云去采集。Octopus共有5000台服务器,通过云端多节点并发采集,采集速度远快于本地采集。此外,多个IP可以自动切换,避免IP被屏蔽影响采集。
做过工程项目的同学应该能体会到,云集这个功能太方便了,很多时候自动切换IP以及云采集才是自动化采集的关键。
我会在下一篇文章中详细介绍章鱼的使用方法。
集搜客
该工具的特点是完全可视化操作,无需编程。整个采集过程也是所见即所得,采集的结果信息和误差信息都体现在软件中。与章鱼相比,Jisoking没有过程的概念。用户只需要关注要抓取什么数据,流程细节完全交给Jisoking。
但是soking的缺点是没有云采集功能,所有的爬虫都运行在用户自己的电脑上。
如何使用日志收集工具sensor collection基本都是基于特定的设备,设备收集的信息都是可以收集的,这里就不重点介绍了。
让我们看看日志收集。
为什么要做日志收集?日志收集最大的作用就是通过分析用户的访问情况来提高系统的性能,从而提高系统的承载能力。及时发现系统负载的瓶颈,也可以方便技术人员根据用户的实际访问情况进行优化。
收集日志也是运维人员的重要工作之一,那么日志有哪些,如何收集呢?
Journal即日记,记录用户访问网站的全过程:哪些人在什么时间、通过什么渠道(如搜索引擎、URL输入)来过,进行了哪些操作;系统是否产生了错误;甚至用户的IP,HTTP请求的时间,用户代理等。这些日志数据可以写在一个日志文件中,也可以分成不同的日志文件,如访问日志、错误日志等。
日志收集可以分为两种形式。
由Web服务器收集,如httpd,Nginx,Tomcat,都有自己的日志功能。同时,很多互联网公司都有自己的海量数据收集工具,多用于系统日志收集,如Hadoop的Chukwa、Cloudera的Flume、脸书的Scribe等这些工具都采用分布式架构,可以满足每秒数百MB的日志数据采集和传输需求。
收集自定义用户行为,比如用JavaScript代码监控用户行为,AJAX异步请求后台日志记录等。
埋点是什么
掩埋是原木采集的关键步骤,那么什么是掩埋呢?
埋点就是在有需要的位置采集相应的信息,进行上报。比如页面的访问状态,包括用户信息和设备信息;或者用户在页面上的操作行为,包括时间长短等。这是埋点。每个埋点就像一个摄像头,采集用户行为数据,对数据进行多维交叉分析,可以真实还原用户的使用场景和用户的使用需求。
那我们该怎么埋葬它呢?
埋点就是在你需要统计数据的地方植入统计代码。当然,您可以自己编写嵌入式代码,或者使用第三方统计工具。之前讲过“造轮子不重复”的原理。一般来说,需要自己写代码,一般是主要的核心业务。对于埋点等监测工具,市场已经成熟。这里推荐你使用第三方工具,如友盟、谷歌分析、Talkingdata等。都是采用前端嵌入的方式,然后在第三方工具中就可以看到用户的行为数据。但是如果我们想看到更深层次的用户行为,我们需要进行自定义嵌入。
综上所述,日志采集帮助我们了解用户的运营数据,适用于运维监控、安全审计、业务数据分析等场景。一般Web服务器都会有自己的日志功能,或者可以使用Flume来收集、汇总、传输来自不同服务器集群的大容量日志数据。当然,我们也可以使用第三方统计工具或者自定义嵌入点来获取我们想要的统计内容。
汇总数据收集是数据分析的关键。很多时候,我们会想到Python网络爬虫。其实数据收集的方法和渠道有很多,有些可以直接使用开放的数据源。比如想获取比特币历史的价格和交易数据,可以直接从Kaggle下载,不需要自己爬取。
另一方面,根据我们的需求,要收集的数据也是不同的。例如,在运输行业,数据收集将与摄像头或速度计相关。对于运维人员来说,日志收集和分析是关键。因此,我们需要为特定的业务场景选择合适的收集工具。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。