Chap1_基础理论+Chap2_数据准备和数据模型
Chap1
數(shù)據(jù)分析一直在發(fā)展
Internet 與數(shù)據(jù)密切相關(guān)
Chap2
多樣數(shù)據(jù)格式
表數(shù)據(jù) 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
(單元格中可以沒有數(shù)據(jù)值)
CSV (Comma Separated Value) (逗號分隔值)
CSV是一種用來存儲數(shù)據(jù)的純文本文件.
CSV是最通用的一種文件格式,它可以非常容易地被導(dǎo)入各種表格及數(shù)據(jù)庫中
大數(shù)據(jù)中很多數(shù)據(jù)都是以類似形式存在(包括日本NTT核心網(wǎng)絡(luò)采集的網(wǎng)絡(luò)狀態(tài)數(shù)據(jù))
日志文件Log Files
Q:為什么介紹日志文件?
A:公司必須面對的大數(shù)據(jù)之一。尤其是Facebok這些。
價值高,挖掘用戶訪問模式,系統(tǒng)運(yùn)行情況等
Syslog系統(tǒng)日志
Developed by Eric Allman (at UC Berkeley) as part of the Sendmail project
Standardized by the IETF in RFC 3164 and RFC 5424 (已經(jīng)標(biāo)準(zhǔn)化)
Listens on port 514 using UDP (默認(rèn)預(yù)留UDP端口)
默認(rèn)情況下,數(shù)據(jù)放在 /var/log/ messages
Functionality extended(功能擴(kuò)展)by syslog-ng(開源的日志管理解決方案) and rsyslog
More complex message formatting
(更多的復(fù)雜消息格式)
Content-based filtering (支持內(nèi)容過濾)
TCP as a transport (擴(kuò)展支持TCP)
系統(tǒng)日志是每個大系統(tǒng)必備,用于問題排查(因?yàn)橄到y(tǒng)出問題時,人員未必在現(xiàn)場,需要依靠日志來看問題)
Syslog – XML 格式
XML( eXtensible Markup Language )可擴(kuò)展標(biāo)記語言,是一種簡單的數(shù)據(jù)存儲語言,使用一系列簡單的標(biāo)記描述數(shù)據(jù)。
XML是W3C( 萬維網(wǎng)聯(lián)盟(World Wide Web Consortium) )制定的。 IBM從60年代就開始發(fā)展的通用標(biāo)記語言
XML其占用的空間比二進(jìn)制數(shù)據(jù)要占用更多的空間(其實(shí)就是因?yàn)閹ЫY(jié)構(gòu),半結(jié)構(gòu)化數(shù)據(jù))
XML的簡單使其易于在任何應(yīng)用程序中讀寫數(shù)據(jù),這使XML很快成為數(shù)據(jù)交換的流行的公共語言
Windows、Mac OS, Linux,以及現(xiàn)在很多架構(gòu)都用XML(配置文件)
HTML( HyperText Markup Language ) 也是一種可擴(kuò)展標(biāo)記語言。
HTML VS XML
XML的宗旨是用來傳輸數(shù)據(jù)的; HTML主要用于顯示數(shù)據(jù);
JSON
JSON(JavaScript Object Notation, JS 對象標(biāo)記) 是一種輕量級的數(shù)據(jù)交換格式
JSON脫胎于 JavaScript(功能很強(qiáng)大,GMAIL),但目前很多編程語言都支持 JSON 格式數(shù)據(jù)的生成和解析。
采用完全獨(dú)立于編程語言的文本格式來存儲和表示數(shù)據(jù),采用了類似于C語言的習(xí)慣。
易于人閱讀和編寫。同時也易于機(jī)器解析和生成。
JSON 數(shù)據(jù)格式與語言無關(guān),因此JSON成為理想的數(shù)據(jù)交換語言
AJAX (異步 JavaScript和XML)編程技術(shù)就是采用了JSON 作為數(shù)據(jù)交換格式。
一些基于文檔存儲的NoSQL非關(guān)系型數(shù)據(jù)庫選擇JSON作為其數(shù)據(jù)存儲格式,比較出名的產(chǎn)品有:MongoDB。
JSON語法
JSON構(gòu)建的結(jié)構(gòu)
“名稱/值”對的集合:A collection of (name: value) pairs。與( (index,value),(key,value))比較
不同的語言中,它(JSON)被理解為對象(object),紀(jì)錄(record),結(jié)構(gòu)(struct)(C的對象?),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關(guān)聯(lián)數(shù)組 (associative array)。(這也是JSON被廣泛接受的原因)
與已有數(shù)據(jù)結(jié)構(gòu)相似。這使得JSON數(shù)據(jù)格式在同樣基于這些結(jié)構(gòu)的編程語言之間交換成為可能
對比XML, JSON要簡單的多
相同點(diǎn):都是基于純文本的數(shù)據(jù)格式。并且它們都使用Unicode編碼,同樣具有可讀性。
XML比較適合于標(biāo)記文檔,而JSON卻更適合于時行數(shù)據(jù)交換處理。(HTML 顯示數(shù)據(jù))
可以用 JSON 傳輸一個簡單的 String,Number,Boolean,也可以傳輸一個數(shù)組,或者一個復(fù)雜的 Object 對象
(XML很難做到這一點(diǎn))。
String,Number 和 Boolean 用 JSON 表示非常簡單。例如,用 JSON 表示一個簡單的 String “ abc ”,其格式為:“abc”
JavaScript 處理 JSON 數(shù)據(jù)
以AJAX技術(shù)為例:
服務(wù)器端生成 JSON 格式的數(shù)據(jù)要發(fā)送到客戶端,客戶端如何使用 JavaScript 處理 JSON 格式的數(shù)據(jù)。
通過一個簡單的 JavaScript 方法就能看到客戶端如何將 JSON 數(shù)據(jù)表示給用戶:
假定服務(wù)器返回的 JSON 數(shù)據(jù)是:
{"name":"Michael","address": { "city":"Beijing","street":" Chaoyang Road ","postcode":100025} };只需將其賦值給一個 JavaScript 變量,就可以立刻使用該變量并更新頁面中的信息了。
相比 XML 需要從 DOM 中讀取各種節(jié)點(diǎn)而言,JSON 的使用非常容易。
我們需要做的僅僅是發(fā)送一個 Ajax 請求,然后將服務(wù)器返回的 JSON 數(shù)據(jù)賦值給一個變量即可
數(shù)據(jù)采集
數(shù)據(jù)檢索
批量數(shù)據(jù)獲取
網(wǎng)絡(luò)爬蟲
數(shù)據(jù)篩選
數(shù)據(jù)檢索
最簡單、最靈活的數(shù)據(jù)獲取方式就是依靠檢索
學(xué)會使用搜索引擎
Google:更適合搜索英文信息
百度,bing:適合于搜索中文信息
國內(nèi)常見公開數(shù)據(jù)渠道:
國家相關(guān)部門統(tǒng)計信息
中國銀行業(yè)監(jiān)督管理委員會
中國國家統(tǒng)計局
國際公開數(shù)據(jù)集
1)Amazon從2008年開始就為開發(fā)者提供幾十TB的開發(fā)數(shù)據(jù) https://registry.opendata.aws/
2)1400萬的圖像數(shù)據(jù) http://www.image-net.org/
3)YouTube視頻的統(tǒng)計與社交網(wǎng)絡(luò)數(shù)據(jù)
http://netsg.cs.sfu.ca/youtubedata/
批量數(shù)據(jù)獲取
大量數(shù)據(jù)的獲取難以手動實(shí)現(xiàn),需借助爬蟲程序
也有可能通過交易(購買)“數(shù)據(jù)”而得。
網(wǎng)絡(luò)爬蟲是一個自動在網(wǎng)上抓取數(shù)據(jù)的程序
爬蟲本質(zhì)上就是下載特定網(wǎng)站網(wǎng)頁的HTML/JSON /XML數(shù)據(jù)并對數(shù)據(jù)進(jìn)行解析、提取與存儲
通常先定義一組入口URL,根據(jù)頁面中的其他URL,深度優(yōu)先或廣度優(yōu)先的遍歷訪問,逐一抓取數(shù)據(jù)
網(wǎng)絡(luò)爬蟲
網(wǎng)絡(luò)爬蟲是什么?
網(wǎng)絡(luò)爬蟲(又被稱為網(wǎng)頁蜘蛛,網(wǎng)絡(luò)機(jī)器人),是一種按照一定的規(guī)則,自動的抓取萬維網(wǎng)信息的程序或者腳本。
爬蟲的行為可以劃分為:載入、解析、存儲,且其中最復(fù)雜的部分為載入。
載入:將目標(biāo)網(wǎng)站數(shù)據(jù)下載到本地
1)網(wǎng)站數(shù)據(jù)主要依托于網(wǎng)頁(html)展示
2)爬蟲程序向服務(wù)器發(fā)送網(wǎng)絡(luò)請求,從而獲取相應(yīng)的網(wǎng)頁
2.1)網(wǎng)站常用網(wǎng)絡(luò)協(xié)議:http,https
2.2)數(shù)據(jù)常用請求方式:get,post
get:參數(shù)常放置在URL中
例如:http://www.adc.com?p=1&q=2&r=3
post:參數(shù)常放置在一個表單中
在向目標(biāo)URL發(fā)送請求時,將參數(shù)放置在一個網(wǎng)絡(luò)請求
的報文頭中
實(shí)際操作:抓取一個靜態(tài)網(wǎng)頁步驟
首先確定URL,例如:http://www.baidu.com
其次確定請求的方式以及相關(guān)參數(shù):
直接用瀏覽器實(shí)現(xiàn):chrome,firefox瀏覽器抓包工具
或者抓包工具:charles等
最后在代碼中按照特定的請求方式(get,post)向URL發(fā)送參數(shù),即可收到網(wǎng)頁的結(jié)果
但部分頁面的數(shù)據(jù)是動態(tài)加載的
Ajax異步請求:網(wǎng)頁中的部分?jǐn)?shù)據(jù)需要瀏覽器渲染或者用戶的某些點(diǎn)擊、下拉的操作觸發(fā)才能獲得
解決方案:
1)借助抓包工具,分析某次操作所觸發(fā)的請求,通過代碼實(shí)現(xiàn)相應(yīng)的請求
有技術(shù)難度,但抓取速度快。
2)利用智能化的工具:selenium+webdriver
用程序控制瀏覽器
可以模擬實(shí)現(xiàn)人的所有操作
操作簡單,但是速度慢
反爬蟲:隨著網(wǎng)絡(luò)爬蟲對目標(biāo)網(wǎng)站訪問頻率的加大,網(wǎng)站禁止爬蟲程序繼續(xù)訪問。
常見反爬手段:
1)出現(xiàn)用戶登錄界面,需要驗(yàn)證碼
2)禁止某個固定用戶帳號或ip一段時間內(nèi)訪問網(wǎng)站
3)更有甚者,直接返回錯誤的無用數(shù)據(jù)
應(yīng)對措施:
1) 優(yōu)化爬蟲程序,盡量減少訪問次數(shù),盡量不抓取重復(fù)內(nèi)容
2) 使用多個cookie(網(wǎng)站用來識別用戶的手段,每個用戶登錄生成一個cookie)
3) 使用多個ip(可以用代理實(shí)現(xiàn))
后續(xù)部分內(nèi)容就是數(shù)據(jù)庫,可以參考這個博客
總結(jié)
以上是生活随笔為你收集整理的Chap1_基础理论+Chap2_数据准备和数据模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我为什么要立刻放弃React而使用Vue
- 下一篇: ONLYOFFICE支持wps格式文件(