Chap1_基础理论&Chap2_数据准备和数据模型
Chap1
数据分析一直在发展
Internet 与数据密切相关
Chap2
多样数据格式
表数据 Tabular Data
A table is a collection of rows and columns
Each row(行) has an index(索引)
Each column(列) has a name(名字)
A cell(单元格) is specified by an (index, name) pair
A cell may or may not have a value
(单元格中可以没有数据值)
CSV (Comma Separated Value) (逗号分隔值)
CSV是一种用来存储数据的纯文本文件.
CSV是最通用的一种文件格式,它可以非常容易地被导入各种表格及数据库中
大数据中很多数据都是以类似形式存在(包括日本NTT核心网络采集的网络状态数据)
日志文件Log Files
Q:为什么介绍日志文件?
A:公司必须面对的大数据之一。尤其是Facebok这些。
价值高,挖掘用户访问模式,系统运行情况等
Syslog系统日志
Developed by Eric Allman (at UC Berkeley) as part of the Sendmail project
Standardized by the IETF in RFC 3164 and RFC 5424 (已经标准化)
Listens on port 514 using UDP (默认预留UDP端口)
默认情况下,数据放在 /var/log/ messages
Functionality extended(功能扩展)by syslog-ng(开源的日志管理解决方案) and rsyslog
More complex message formatting
(更多的复杂消息格式)
Content-based filtering (支持内容过滤)
TCP as a transport (扩展支持TCP)
系统日志是每个大系统必备,用于问题排查(因为系统出问题时,人员未必在现场,需要依靠日志来看问题)
Syslog – XML 格式
XML( eXtensible Markup Language )可扩展标记语言,是一种简单的数据存储语言,使用一系列简单的标记描述数据。
XML是W3C( 万维网联盟(World Wide Web Consortium) )制定的。 IBM从60年代就开始发展的通用标记语言
XML其占用的空间比二进制数据要占用更多的空间(其实就是因为带结构,半结构化数据)
XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的流行的公共语言
Windows、Mac OS, Linux,以及现在很多架构都用XML(配置文件)
HTML( HyperText Markup Language ) 也是一种可扩展标记语言。
HTML VS XML
XML的宗旨是用来传输数据的; HTML主要用于显示数据;
JSON
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式
JSON脱胎于 JavaScript(功能很强大,GMAIL),但目前很多编程语言都支持 JSON 格式数据的生成和解析。
采用完全独立于编程语言的文本格式来存储和表示数据,采用了类似于C语言的习惯。
易于人阅读和编写。同时也易于机器解析和生成。
JSON 数据格式与语言无关,因此JSON成为理想的数据交换语言
AJAX (异步 JavaScript和XML)编程技术就是采用了JSON 作为数据交换格式。
一些基于文档存储的NoSQL非关系型数据库选择JSON作为其数据存储格式,比较出名的产品有:MongoDB。
JSON语法
JSON构建的结构
“名称/值”对的集合:A collection of (name: value) pairs。与( (index,value),(key,value))比较
不同的语言中,它(JSON)被理解为对象(object),纪录(record),结构(struct)(C的对象?),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。(这也是JSON被广泛接受的原因)
与已有数据结构相似。这使得JSON数据格式在同样基于这些结构的编程语言之间交换成为可能
JSON vs XML
XML和JSON都使用结构化方法(实际是半结构化)来标记数据,下面来做一个简单的比较。现假设有一个用户数据包括:用户名、密码、所在部门、性别、年龄
`用XML表示如下:
对比XML, JSON要简单的多
相同点:都是基于纯文本的数据格式。并且它们都使用Unicode编码,同样具有可读性。
XML比较适合于标记文档,而JSON却更适合于时行数据交换处理。(HTML 显示数据)
可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的 Object 对象
(XML很难做到这一点)。
String,Number 和 Boolean 用 JSON 表示非常简单。例如,用 JSON 表示一个简单的 String “ abc ”,其格式为:“abc”
JavaScript 处理 JSON 数据
以AJAX技术为例:
服务器端生成 JSON 格式的数据要发送到客户端,客户端如何使用 JavaScript 处理 JSON 格式的数据。
通过一个简单的 JavaScript 方法就能看到客户端如何将 JSON 数据表示给用户:
function handleJson() { var j={"name":"Michael", "address": { "city":"Beijing", "street":" Chaoyang Road ", "postcode":100025 } }; document.write(j.name); document.write(j.address.city); }
假定服务器返回的 JSON 数据是:
{"name":"Michael", "address": { "city":"Beijing", "street":" Chaoyang Road ", "postcode":100025 }
只需将其赋值给一个 JavaScript 变量,就可以立刻使用该变量并更新页面中的信息了。
相比 XML 需要从 DOM 中读取各种节点而言,JSON 的使用非常容易。
我们需要做的仅仅是发送一个 Ajax 请求,然后将服务器返回的 JSON 数据赋值给一个变量即可
数据采集
数据检索
批量数据获取
网络爬虫
数据筛选
数据检索
最简单、最灵活的数据获取方式就是依靠检索
学会使用搜索引擎
Google:更适合搜索英文信息
百度,bing:适合于搜索中文信息
国内常见公开数据渠道:
国家相关部门统计信息
中国银行业监督管理委员会
中国国家统计局
国际公开数据集
1)Amazon从2008年开始就为开发者提供几十TB的开发数据 https://registry.opendata.aws/
2)1400万的图像数据 http://www.image-net.org/
3)YouTube视频的统计与社交网络数据
http://netsg.cs.sfu.ca/youtubedata/
批量数据获取
大量数据的获取难以手动实现,需借助爬虫程序
也有可能通过交易(购买)“数据”而得。
网络爬虫是一个自动在网上抓取数据的程序
爬虫本质上就是下载特定网站网页的HTML/JSON /XML数据并对数据进行解析、提取与存储
通常先定义一组入口URL,根据页面中的其他URL,深度优先或广度优先的遍历访问,逐一抓取数据
网络爬虫
网络爬虫是什么?
网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。
爬虫的行为可以划分为:载入、解析、存储,且其中最复杂的部分为载入。
载入:将目标网站数据下载到本地
1)网站数据主要依托于网页(html)展示
2)爬虫程序向服务器发送网络请求,从而获取相应的网页
2.1)网站常用网络协议:http,https
2.2)数据常用请求方式:get,post
get:参数常放置在URL中
例如:http://www.adc.com?p=1&q=2&r=3
post:参数常放置在一个表单中
在向目标URL发送请求时,将参数放置在一个网络请求
的报文头中
实际操作:抓取一个静态网页步骤
首先确定URL,例如:http://www.baidu.com
其次确定请求的方式以及相关参数:
直接用浏览器实现:chrome,firefox浏览器抓包工具
或者抓包工具:charles等
最后在代码中按照特定的请求方式(get,post)向URL发送参数,即可收到网页的结果
但部分页面的数据是动态加载的
Ajax异步请求:网页中的部分数据需要浏览器渲染或者用户的某些点击、下拉的操作触发才能获得
解决方案:
1)借助抓包工具,分析某次操作所触发的请求,通过代码实现相应的请求
有技术难度,但抓取速度快。
2)利用智能化的工具:selenium+webdriver
用程序控制浏览器
可以模拟实现人的所有操作
操作简单,但是速度慢
反爬虫:随着网络爬虫对目标网站访问频率的加大,网站禁止爬虫程序继续访问。
常见反爬手段:
1)出现用户登录界面,需要验证码
2)禁止某个固定用户帐号或ip一段时间内访问网站
3)更有甚者,直接返回错误的无用数据
应对措施:
1) 优化爬虫程序,尽量减少访问次数,尽量不抓取重复内容
2) 使用多个cookie(网站用来识别用户的手段,每个用户登录生成一个cookie)
3) 使用多个ip(可以用代理实现)
后续部分内容就是数据库,可以参考这个课堂检测
- 点赞
- 收藏
- 关注作者
评论(0)