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