数据分析实战——08 | 数据采集:如何自动化采集数据?

  • 从数据采集角度来说,都有哪些数据源呢?
    • 这四类数据源包括了:开放数据源、爬虫抓取、传感器和日志采集
    • 开放数据源一般是针对行业的数据库。国内,贵州做了不少大胆尝试,搭建了云平台,逐年开放了旅游、交通、商务等领域的数据量
    • 爬虫抓取,一般是针对特定的网站或 App。如果我们想要抓取指定的网站数据,比如购物网站上的购物评价等,就需要我们做特定的爬虫抓取。
    • 第三类数据源是传感器,它基本上采集的是物理信息。比如图像、视频、或者某个物体的速度、热度、压强等。
    • 最后是日志采集,这个是统计用户的操作。我们可以在前端进行埋点,在后端进行脚本收集、统计,来分析网站的访问情况,以及使用瓶颈等
    • 数据分析实战——08 | 数据采集:如何自动化采集数据?
  • 如何使用开放数据源
    • 一个是单位的维度,比如政府、企业、高校;一个就是行业维度,比如交通、金融、能源等领域
  • 如何使用爬虫做抓取
    • 在 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 从不同的服务器集群中采集、汇总和传输大容量的日志数据
      • 当然我们也可以使用第三方的统计工具或自定义埋点得到自己想要的统计内容