行业大数据复习
按照老師所講,僅供參考
前面為大數據的相關概念,后面為爬蟲概念及使用
實際用書為大數據導論。。。
第一章 概述
1.數據
所有能輸入到計算機并被計算機程序處理的符號的總稱
2.數據的分類
- 結構化數據:包括預定義的數據類型、格式和結構的數據。例如關系數據庫和CSV文檔
- 半結構數據:具有可識別的模式并可以解析的文本數據文件。例如JSON以及XML
- 非結構化數據:沒有固定結構的數據,通常保存為不同格式的文件。例如文章,聲音,視頻
- 半結構化和非結構化數據只有轉換成結構化數據才可以讓機器學習。
3.大數據4V特征
- 規模大(Volume):數據的采集,計算,存儲量都非常的龐大。
- 變化快(Velocity):數據增長速度快,處理速度也快,獲取數據的速度也要快。
- 種類雜(Variety):種類和來源多樣化。種類有結構化、半結構化、非結構化數據等,常見
的來源有:網絡日志、音頻、視頻、圖片等等。 - 價值密度低 (Value):數據價值密度相對較低,猶如浪里淘金,我們需要對一系列價值密
度低的數據進行分析處理,才能獲取大量信息中所蘊含的部分有價值信息。
4.大數據的計算特征
近似性,增量性,歸納性
思維模式:采樣 vs 全樣,精確 vs 非精確,因果 vs 關聯
5.數據處理的一般過程
- 數據獲取:
數據獲取后,需要對數據進行變換、清洗等預處理,輸出滿足數據應用要求的數據 - 數據管理:
對數據進行分類、編碼、存儲、索引和查詢 - 數據分析:
描述性分析、診斷性分析、預測性分析和規范性分析 - 數據可視化與交互分析:
幫助業務人員而非數據處理專家更好的理解數據分析的結果
6.大數據應用到了哪些行業 ?試列舉一例。
- 社交網絡:大量音頻、文本信息、視頻、圖片等非結構化數據出現
- 電子商務:能更全面豐富的獲取用戶現實購物興趣
- 移動互聯網:準確、更快地收集用戶信息,如位置、生活信息等數據
第二章 數據采集與治理
1.大數據的來源:
- 對現實世界的測量:通過感知設備或的數據。
- 人類的記錄:由人錄入計算機形成數據
- 計算機生成的數據:計算機通過現實世界模擬等程序生成的數據
2.數據采集
是指從真實世界對象中獲得原始數據的過程,可靠性和時效性
常用方法:傳感器,日志,爬蟲,眾包
3.數據質量的評估標準
- 完整性:數據信息是否缺失
- 一致性:數據是否遵循了統一的規范,邏輯關系是否正確和完整
- 準確性:數據是否存在異常或錯誤
- 及時性:數據從產生到可以查看的時間間隔
4.數據質量影響因素
- 信息因素:數據源規格不統一
- 技術因素:技術處理的異常
- 流程因素:流程設置不當
- 管理因素:人員素質和管理機制問題
5.處理連續數據
數據離散化,等距,等頻,優化離散
6.數據集成
- 傳統數據集成:聯邦數據庫、數據倉庫、Mediator
- 跨界數據集成:基于階段的方法,基于特征的方法,基于語義的方法
7.分箱法
- 等深分箱法:每箱具有相同的記錄數,每個箱子的記錄數成為箱子的深度。
- 等寬分箱法:在整個數據值的區間上平均分割,使得每個箱子的區間相等,這個區間被稱為箱 子的寬度。
- 用戶自定義分箱法:根據用戶自定義的規則進行分箱處理。
以下是客戶收入屬性的取值,請按照上述三種方案進行分箱處理
800 1000 1200 1500 1500 1800 2000 2300 2500 2800 3000 3500 4000 4500 4800 5000
8.平滑處理
9.聚類:
將數據集合分組為若干簇,在簇外的值即為孤立點,這些孤立點就是噪聲數據,對這些孤立點進行刪除或替換操作。相似或相鄰近的數據聚合在一起形成各個聚類集合,在這些聚類集合之外的數據數據。
10.回歸:
通過發現兩個相關的變量之間相關關系,構造一個回歸函數使得該函數能夠最大程度地滿足兩個變量之間的關系,使用這個函數來平滑數據。
11.處理冗余數據
通常采用過濾數據的方法來處理冗余數據:
- 重復過濾,從每一個重復數據中取出一條記錄保留下來,刪去其他的重復數據
- 條件過濾,根據一個或多個條件對數據進行過濾
12.不一致監測與修復
基于數據的完整性約束,包含依賴、函數依賴、條件函數依賴等
13.缺失值填充方法
- 刪除:直接刪除相應的屬性或者樣本
- 統計填充:使用所有樣本關于這一維的統計值進行填充,如平均數、中位數、眾數、最大值最小 值等。
- 統一填充:將所有的缺失值統一填充為自定義值,如”空“、”0“、”正無窮“、”負無窮等。
- 預測填充:通過預測模型利用存在的屬性值預測缺失值。
14.實體識別
使得每個經過實體識別后得到的對象簇在將現實世界中指代的是同一實體。
解決的問題:冗余問題,重名問題
兩類技術:
- 冗余發現:計算對象之間的相似度,通過閾值比較進行判斷對象是否為同一實體類。
- 重名檢測:利用聚類技術,通過考察實體屬性間的關聯程度判定相同名稱的對象是否為
同一實體類。
15.有人認為,自己的數據掌握在別人手中不安全,可能會被侵犯隱私,請問你對此有什么看法?
互聯網充斥著我們的日常生活,我們的數據不可能完全的掌握在自己手中,我們在網絡上傳輸任何信息都能被傳輸平臺獲取到甚至被一些人非法截取。我們能做的就是,不在釣魚平臺輸入我們的數據,讓不法分子有機可乘。正規的平臺即便是能獲取我們的數據,也不會做出侵犯隱私的行為。
你認為如何約束信息”持有者“才能保證其客戶信息安全?
要讓其做出正規的承諾不會利用客戶信息進行隱私侵犯。如在使用手機軟件的時候,會獲取地理位置、短信等,需要讓其保證僅用來使軟件正常運行,而不是把獲取的隱私信息非法分享出去。
第三章 大數據管理(這次不考,就閑的寫寫)
1.數據庫管理技術
數據管理技術是指對數據進行分類、編碼、存儲、索引和查詢,是大數據處理流程中的關鍵技術,負責數據從落地存儲(寫) 到查詢檢索(讀) 的核心系統
2.數據庫
數據庫(Database)是按照數據結構來組織、存儲和管理數據的建立在計算機存儲設備上的倉庫
3.關系數據庫
核心是將數據保存在由行和列組成的簡單表中,而不是將數據保存在一個層次結構中
特點:
1、數據集中控制;
2、數據獨立性高;
3、數據共享性好;
4、數據冗余度小;
5、數據結構化;
6、統一的數據保護功能。
4.關系數據模型
- 都用關系表示
- 確保數據完整:實體完整性,參照完整性,自定義完整性
- 一行是一個元祖,列稱為關系的屬性
- 如果在一個關系中存在唯一標識一個元組的屬性集合(可以是單一屬性構成的集合),則稱該屬性集合為這個關系的鍵或碼。
- 用來唯一標識一個元組的最小屬性集合,稱為主鍵(主碼)。
5.關系數據模型的數據操作
- 查詢
選擇(Select)、投影(Project)、并(Union)、差(Except)以及連接(Join)等 - 更新
插入(Insert)、修改(Update)、刪除(Delete)
6.數據庫事務特性
- 原子性(Atomicity):事務所包含的所有操作要么全部正確地反映在數據庫中,要么全部不反映;
- 一致性(Consistency):事務的執行會使數據庫從一種一致性的狀態達到另一種一致性狀態,即事務的執行不會讓數據庫出現不一致;
- 隔離性(Isolation):事務之間是隔離的,每個事務都感覺不到系統中有其他事務在并發地執行;
- 持久性(Durability):一個事務成功完成后,它對數據庫的改變是永久的,即使系統出現故障也是如此。
7.分布式文件系統
分布式文件系統建立在通過網絡聯系在一起的多臺價格相對低廉的服務器上,將要存儲的文件按照特定的策略劃分成多個片段分散放置在系統中的多臺服務器上
8.HDFS特點
- 適合大文件存儲和處理
- 集群規模可動態擴展
- 能有效保證數據一致性
- 數據的吞吐量大,跨平臺移植性好
第四章 python數據分析概述
1.數據分析
- 狹義的數據分析是指根據分析目的,采用對比分析、分組分析、交叉分析和回歸分析等分析方法,對收集來的數據進行處理與分析,提取有價值的信息,發揮數據的作用,得到一個特征統計量結果的過程。
- 數據挖掘則是從大量的、不完全的、有噪聲的、模糊的、隨機的實際應用數據中,通過應用聚類、分類、回歸和關聯規則等技術,挖掘潛在價值的過程。
2.社交媒體分析
- 用戶分析主要根據用戶注冊信息,登錄平臺的時間點和平時發表的內容等用戶數據,分析用戶個人畫像和
行為特征。 - 訪問分析則是通過用戶平時訪問的內容,分析用戶的興趣愛好,進而分析潛在的商業價值。
- 互動分析根據互相關注對象的行為預測該對象未來的某些行為特征。
3.python優勢
- 簡單、易學
- 免費、開源
- 高級語言
- 強大的第三方類庫
- 可擴展性、可嵌入性、跨平臺性
4.數據分析常用庫
- IPython——科學計算標準工具集的組成部分
- NumPy(Numerical Python)—— Python 科學計算的基礎包
- SciPy——專門解決科學計算中各種標準問題域的模塊的集合
- Pandas——數據分析核心庫
- Matplotlib——繪制數據圖表的 Python 庫
- scikit-learn——數據挖掘和數據分析工具
- Spyder——交互式 Python 語言開發環境
第五章 python爬蟲簡介
1.爬蟲
網絡爬蟲也被稱為網絡蜘蛛、網絡機器人,是一個自動下載網頁的計算機程序或自動化腳本。
2.網頁的特點
-
網頁都有自己唯一的URL(統一資源命令符,如https://www.baidu.com/)來進行定位
-
網頁都使用HTML(超文本標記語言)來描述頁面信息
-
網頁都使用HTTP/HTTPS(超文本傳輸協議)協議來傳輸HTML數據
3.策略
- 深度優先策略:按照深度由低到高的順序,依次訪問下一級網頁鏈接,直到無法再深入為止。網頁的層次結構圖中的爬行順序可以是:A → D → E → B → C → F → G。
- 廣度優先策略:按照網頁內容目錄層次的深淺來爬行,優先爬取較淺層次的頁面。當同一層中的頁面全部爬行完畢后,爬蟲再深入下一層。爬行順序可以是:A→B→C→D→E→F→G。
4.爬蟲分類
- 通用網絡爬蟲
又稱為全網爬蟲,其爬行對象由一批種子URL擴充至整個Web,該類爬蟲比較適合為搜索引擎搜索廣泛的主題,主要由搜索引擎或大型Web服務提供商使用 - 聚焦網絡爬蟲
又被稱作主題網絡爬蟲,其最大的特點是只選擇性地爬行與預設的主題相關的頁面
基于內容評價的爬行策略
基于鏈接結構評價的爬行策略
基于增強學習的爬行策略
基于語境圖的爬行策略
- 增量式網絡爬蟲
增量式網絡爬蟲只對已下載網頁采取增量式更新或只爬行新產生的及已經發生變化的網頁,需要通過重新訪問網頁對本地頁面進行更新,從而保持本地集中存儲的頁面為最新頁面
統一更新法:以相同的頻率訪問所有網頁,不受網頁本身的改變頻率的影響。
個體更新法:根據個體網頁的改變頻率來決定重新訪問各頁面的頻率。
基于分類的更新法:爬蟲按照網頁變化頻率分為更新較快和更新較慢的網頁類別,分別設定不同的頻率來訪問這兩類網頁。
- 深層網絡爬蟲
深層頁面為大部分內容無法通過靜態鏈接獲取,隱藏在搜索表單后的,需要用戶提交關鍵詞后才能獲得的Web頁面
基于領域知識的表單填寫:該種方法一般會維持一個本體庫,通過語義分析來選取合適的關鍵詞填寫表單。
基于網頁結構分析的表單填寫:這種方法一般無領域知識或僅有有限的領域知識,將HTML網頁表示為DOM樹形式,將表單區分為單屬性表單和多屬性表單,分別進行處理,從中提取表單各字段值。
5.不能爬取
- 個人隱私數據:如姓名、手機號碼、年齡、血型、婚姻情況等,爬取此類數據將會觸犯個人信息保護法。
- 明確禁止他人訪問的數據:例如用戶設置了賬號密碼等權限控制,進行了加密的內容。
還需注意版權相關問題,有作者署名的受版權保護的內容不允許爬取后隨意轉載或用于商業用途。 - robots協議中的規定
6.robots.txt
User-agent: * Disallow: / Allow: /public/- 上面的User-agent描述了搜索爬蟲的名稱,這里將其設置為*則代表該協議對任何爬取爬蟲有效。 比如,我們可以設置:User-agent: Baiduspider 。這就代表我們設置的規則對百度爬蟲是有效的。 如果有多條User-agent記錄,則就會有多個爬蟲會受到爬取限制,但至少需要指定一條。
- Disallow 指定了不允許抓取的目錄,比如上例子中設置為/則代表不允許抓取所有頁面。
- Allow一般和Disallow一起使用,一般不會單獨使用,用來排除某些限制。 現在我們設置為/public/,則表示所有頁面不允許抓取,但可以抓取public目錄。
7.網站反爬蟲的目的與手段***
- 通過User-Agent校驗反爬
- 通過訪問頻度反爬
- 通過驗證碼校驗反爬
- 通過變換網頁結構反爬
- 通過賬號權限反爬
8.上有政策下有對策 (ps:(?▽?)這不比爬取策略形象多了)
- 發送模擬User-Agent
- 調整訪問頻度
- 通過驗證碼校驗
- 應對網站結構變化
- 通過賬號權限限制
- 通過代理IP規避
9.爬蟲相關庫
第六章 網頁前端基礎
1.socket庫
提供多種協議類型和函數,可用于建立TCP和UDP連接
2.HTTP請求方式與過程
- 由HTTP客戶端向服務器發起一個請求,創建一個到服務器指定端口(默認是80端口)的TCP連接。
- HTTP服務器從該端口監聽客戶端的請求。
- 一旦收到請求,服務器會向客戶端返回一個狀態,比如“HTTP/1.1 200 OK”,以及返回的響應內容,如請求的文件、錯誤消息、或其它信息。
3.常用請求方法
4.請求(request)與響應(response)
HTTP協議采用了請求/響應模型。
- 客戶端向服務器發送一個請求報文,請求報文包含請求的方法、URL、協議版本、請求頭部和請求數據。
- 服務器以一個狀態行作為響應,響應的內容包括協議的版本、響應狀態、服務器信息、響應頭部和響應數據
5.具體步驟
- 連接Web服務器
- 發送HTTP請求
- 服務器接受請求并返回HTTP響應
- 釋放連接TCP連接
- 客戶端解析HTML內容
6.HTTP狀態碼種類***
HTTP狀態碼是用來表示網頁服務器響應狀態的3位數字代碼,按首位數字分為5類狀態碼
7.HTTP頭部類型***
- 通用頭:既適用于客戶端的請求頭,也適用于服務端的響應頭。與HTTP消息體內最終傳輸的數據是無關的,只適用于要發送的消息。
- 請求頭:提供更為精確的描述信息,其對象為所請求的資源或請求本身。新版HTTP增加的請求頭不能在更低版本的HTTP中使用,但服務器和客戶端若都能對相關頭進行處理,則可以在請求中使用。
- 響應頭:為響應消息提供了更多信息。例如,關于資源位置的描述Location字段,以及關于服務器本身的描述使用Server字段等。與請求頭類似,新版增加的響應頭也不能在更低版本的HTTP版本中使用。
- 實體頭:提供了關于消息體的描述。如消息體的長度Content-Length,消息體的MIME類型Content-Type。新版的實體頭可以在更低版本的HTTP版本中使用。
8.cookie
- 客戶端請求服務器:客戶端請求網站頁面
- 服務器響應請求:Cookie是一種字符串,為key=value形式,服務器需要記錄這個客戶端請求的狀態,在響應頭中增加一個Set-Cookie字段。
- 客戶端再次請求服務器:客戶端會對服務器響應的Set-Cookie頭信息進行存儲。當再次請求時,將會在請求頭中包含服務器響應的Cookie信息。
Cookie機制可記錄用戶狀態,服務器可依據Cookie對用戶狀態進行記錄與識別。
第七章 簡單靜態網頁爬取
1.靜態網頁
靜態網頁是相對于動態網頁而言,是指沒有后臺數據庫、不含程序和不可交互的網頁。
2.爬蟲基本流程***
- 發起請求:通過HTTP庫向目標站點發起請求,即發送一個Request,請求可以包含額外的headers等信息,等待服務器響應。
- 獲取響應內容:如果服務器能正常響應,會得到一個Response,Response的內容便是所要獲取的頁面內容,類型可能有HTML,Json字符串,二進制數據(如圖片視頻)等類型。
- 解析內容:得到的內容可能是HTML,可以用正則表達式、網頁解析庫進行解析。可能是Json,可以直接轉為Json對象解析,可能是二進制數據,可以做保存或者進一步的處理。
- 保存數據:保存形式多樣,可以存為文本,也可以保存至數據庫,或者保存特定格式的文件。
3.urllib3庫***
- (1)生成請求
-
(2)請求頭處理
在request方法中,如果需要傳入headers參數,可通過定義一個字典類型實現。定義一個包含User-Agent信息的字典,使用瀏覽器為火狐和chrome瀏覽器,操作系統為“Windows NT 6.1; Win64; x64”,向網站“https://www.jd.com/index.html”發送帶headers參數的GET請求,hearders參數為定義的User-Agent字典。 -
(3)Timeout設置
為防止因為網絡不穩定、服務器不穩定等問題造成連接不穩定時的丟包,可以在請求中增加timeout參數設置,通常為浮點數。
依據不同需求,timeout參數提供多種設置方法,可直接在URL后設置該次請求的全部timeout參數,也可分別設置該次請求的連接與讀取timeout參數,在PoolManager實例中設置timeout參數可應用至該實例的全部請求中。 -
(4)請求重試設置
urllib3庫可以通過設置retries參數對重試進行控制。默認進行3次請求重試,并進行3次重定向。自定義重試次數通過賦值一個整型給retries參數實現,可通過定義retries實例來定制請求重試次數及重定向次數。 -
(5)生成完整HTTP請求
使用urllib3庫實現生成一個完整的請求,該請求應當包含鏈接、請求頭、超時時間和重試次數設置。
4.requests庫
requests庫是一個原生的HTTP庫,比urllib3庫更為容易使用
- (1)生成請求
-
(2)查看狀態碼與編碼
當requests庫猜測錯時,需要手動指定encoding編碼,避免返回的網頁內容解析出現亂碼。
使用detect庫檢測 -
(3)請求頭與響應頭處理
requests庫中對請求頭的處理與urllib3庫類似,也使用headers參數在GET請求中上傳參數,參數形式為字典。使用headers屬性即可查看服務器返回的響應頭,通常響應頭返回的結果會與上傳的請求參數對應。 -
(4)Timeout設置
在requests庫中通過設置timeout這個參數實現,超過該參數設定的秒數后,程序會停止等待。 -
(5)生成完整HTTP請求
一個完整的GET請求,該請求包含鏈接、請求頭、響應頭、超時時間和狀態碼,并且編碼應正確設置。
利用decode函數對requests.content解決中文亂碼
import requests url = "http://xxx.com" r = requests.get(url) print(r.content.decode("gbk"))5.chrome開發者工具
6.正則表達式
正則表達式是一種可以用于模式匹配和替換的工具,可以讓用戶通過使用一系列的特殊字符構建匹配模式,然后把匹配模式與待比較字符串或文件進行比較,根據比較對象中是否包含匹配模式,執行相應的程序。
import re example_obj = "1. A small sentence. - 2. Another tiny sentence. " re.findall('sentence',example_obj) #從字符串任意位置查找,可以找到所有滿足匹配條件的結果,并以列表的形式返回!!! re.search('sentence',example_obj) #可以掃描整個字符串并返回第一個成功的匹配!!! re.sub('sentence','SENTENCE',example_obj) ##替換 re.match('.*sentence',example_obj) ##必須從字符串開頭匹配!!!常用廣義化符號
1、英文句號“.”:能代表除換行符“\n”任意一個字符;
2、字符類“[]”:被包含在中括號內部,任何中括號內的字符都會被匹配;
3、管道“|”:該字符被視為OR操作;
7.獲取網頁中的標題內容
使用正則表達式無法很好的定位特定節點并獲取其中的鏈接和文本內容,而使用Xpath和Beautiful Soup能較為便利的實現這個功能。
8.xpath
- 它是一種基于XML的樹狀結構,在數據結構樹中找尋節點,確定XML文檔中某部分位置的語言
- (1)基本語法
初始化
- (2)常用匹配表達式
- (3)功能函數
9.Beautiful Soup
- (1)創建
- (2)格式化輸出
對象類型
1.Tag對象類型
Tag有兩個非常重要的屬性:name和attributes。name屬性可通過name方法來獲取和修改,修改過后的name屬性將會應用至BeautifulSoup對象生成的HTML文檔。
2.NavigableString對象類型
NavigableString對象為包含在Tag中的文本字符串內容,如“The Dormouse‘s story”中的“The Dormouse’s story”,使用string的方法獲取,NavigableString對象無法被編輯,但可以使用replace_with的方法進行替換。
3.BeautifulSoup對象類型
BeautifulSoup對象表示的是一個文檔的全部內容。大部分時候,可以把它當作Tag對象。 BeautifulSoup對象并不是真正的HTML或XML的tag,所以并沒有tag的name和attribute屬性,但其包含了一個值為“[document]”的特殊屬性name。
4Comment對象類型
Tag、NavigableString、BeautifulSoup幾乎覆蓋了html和xml中的所有內容,但是還有一些特殊對象,文檔的注釋部分是最容易與Tag中的文本字符串混淆的部分。Beautiful Soup庫中將文檔的注釋部分識別為Comment類型,Comment對象是一個特殊類型的NavigableString對象,但是當其出現在HTML文檔中時,Comment對象會使用特殊的格式輸出,需調用prettify方法。
- (3)搜索
常用的有find方法和find_all方法,兩者的參數一致,區別為find_all方法的返回結果是值包含一個元素的列表,而find直接返回的是結果。
10.數據存儲
將數據存儲為JSON文件
json.dump(obj,fp,skipkeys=False,ensure_ascii=True,check_circular=True,allow_nan=True,cls=None,indent=None,separators=None,encoding='utf-8', default=None, sort_keys=False, **kw)代碼實例分析
1.request獲取網頁title
page = urllib.request.urlopen('https://www.cnki.net/') #獲取網頁 html = page.read().decode('utf-8')#轉換成utf-8title=re.findall('<title>(.+)</title>',html)#獲取title之間所有內容 print (title)#輸出2.網頁熱詞
https://weixin.sogou.com/
看到路徑是名為topwords的ol下的li下的a
這里不直接 查找i標簽后的,因為它的i標簽不是全有特殊class名(什么辣雞玩意,白費好久功夫)
- bs4獲取
- xpath
動態網頁僅僅提及,不寫了
??ヽ(゚▽゚)ノ?完結撒花!
總結
- 上一篇: 项目实战 编辑
- 下一篇: 微信小程序 点击按钮 退出