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數據格式在同樣基于這些結構的編程語言之間交換成為可能
對比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 數據表示給用戶:
假定服務器返回的 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(可以用代理實現)
后續部分內容就是數據庫,可以參考這個博客
總結
以上是生活随笔為你收集整理的Chap1_基础理论+Chap2_数据准备和数据模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我为什么要立刻放弃React而使用Vue
- 下一篇: ONLYOFFICE支持wps格式文件(